Hallo zusammen,
ich sitze derzeit an einer GUI, die auf einem Handheld unter Java 1.3 laufen soll, wobei ich in den letzten Tagen an diversen Problemen zu knabbern hatte. Ich habe bislang leider noch keine Lösung gefunden und hoffe, dass mir vielleicht jemand von Euch weiterhelfen kann.
1. Ich würde gerne in einem Fenster alle Komponenten per "Tab" durchlaufen können. Die Komponente, die aktuell den Fokus besitzt soll hervorgehoben werden (Hintergrund in anderer Farbe, Rahmen um Komponente etc.). Ich habe nun einige Komponenten erstellt (HighlightedTextfield, HighlightedCombobox, HighlightedButton, ...) die jeweils bei FocusGain die Komponente markieren und bei FocusLost wieder zurücksetzen. Gibt es da evtl. eine elegantere Möglichkeit, so dass ich nicht für jede Komponente eine abgeleitete Klasse nutzen muss? Ich habe überlegt mit addAWTEventListener einen Listener für Focus-Events zu registrieren, die Methode (addAWTEventListener) gibt es aber leider bei der VM für den Handheld nicht.
2. Zusätzlich habe ich Probleme mit der Combobox. Es werden keine Focus-Events erzeugt, wenn sie mit Tab durchlaufen wird. Erst wenn ein Element (per Maus) ausgewählt wird, wird zunächst ein FocusLost (!) und dann ein FocusGain erzeugt. Wie bringe ich die Combobox dazu, bei Aktivierung durch Tab ein FocusGain-Event zu erzeugen?
3. Das Durchlaufen mit "Tab" scheitert leider auch bei einer Tabelle. Ich komme mit "Tab" bis in die erste Zeile, da ist dann Ende. Ich würde gerne weiter die Zeilen durchlaufen und am Ende der Tabelle auf die nächste (außerhalb liegende) Komponente wechseln können. Die Tabelle reagiert aber leider nicht auf KeyEvent.VK_TAB in einem KeyListener. Über eine InputMap komme ich auch nicht weiter, da bei table.getInputMap() jeweils NoSuchMethodException geworfen wird.
4. Ich habe einen simplen JDialog, der modal vor einem JFrame angezeigt wird. Wenn ein Knopf auf dem Dialog gedrückt wird, wird per JOptionPane eine Nachricht angezeigt, danach wird per textfield.requestFocus() der Fokus auf ein Feld gesetzt. Das klappt aber nur in ca. 50% der Fälle! Bei den anderen 50% wird der Fokus wieder auf den Knopf gesetzt... ein sehr seltsames Verhalten.
Ich hoffe, irgendjemand hat einige gute Ideen, die mir vielleicht weiterhelfen könnten. Vielen Dank schon mal im voraus.
Gruß,
AMiGA
ich sitze derzeit an einer GUI, die auf einem Handheld unter Java 1.3 laufen soll, wobei ich in den letzten Tagen an diversen Problemen zu knabbern hatte. Ich habe bislang leider noch keine Lösung gefunden und hoffe, dass mir vielleicht jemand von Euch weiterhelfen kann.
1. Ich würde gerne in einem Fenster alle Komponenten per "Tab" durchlaufen können. Die Komponente, die aktuell den Fokus besitzt soll hervorgehoben werden (Hintergrund in anderer Farbe, Rahmen um Komponente etc.). Ich habe nun einige Komponenten erstellt (HighlightedTextfield, HighlightedCombobox, HighlightedButton, ...) die jeweils bei FocusGain die Komponente markieren und bei FocusLost wieder zurücksetzen. Gibt es da evtl. eine elegantere Möglichkeit, so dass ich nicht für jede Komponente eine abgeleitete Klasse nutzen muss? Ich habe überlegt mit addAWTEventListener einen Listener für Focus-Events zu registrieren, die Methode (addAWTEventListener) gibt es aber leider bei der VM für den Handheld nicht.
2. Zusätzlich habe ich Probleme mit der Combobox. Es werden keine Focus-Events erzeugt, wenn sie mit Tab durchlaufen wird. Erst wenn ein Element (per Maus) ausgewählt wird, wird zunächst ein FocusLost (!) und dann ein FocusGain erzeugt. Wie bringe ich die Combobox dazu, bei Aktivierung durch Tab ein FocusGain-Event zu erzeugen?
3. Das Durchlaufen mit "Tab" scheitert leider auch bei einer Tabelle. Ich komme mit "Tab" bis in die erste Zeile, da ist dann Ende. Ich würde gerne weiter die Zeilen durchlaufen und am Ende der Tabelle auf die nächste (außerhalb liegende) Komponente wechseln können. Die Tabelle reagiert aber leider nicht auf KeyEvent.VK_TAB in einem KeyListener. Über eine InputMap komme ich auch nicht weiter, da bei table.getInputMap() jeweils NoSuchMethodException geworfen wird.
4. Ich habe einen simplen JDialog, der modal vor einem JFrame angezeigt wird. Wenn ein Knopf auf dem Dialog gedrückt wird, wird per JOptionPane eine Nachricht angezeigt, danach wird per textfield.requestFocus() der Fokus auf ein Feld gesetzt. Das klappt aber nur in ca. 50% der Fälle! Bei den anderen 50% wird der Fokus wieder auf den Knopf gesetzt... ein sehr seltsames Verhalten.
Ich hoffe, irgendjemand hat einige gute Ideen, die mir vielleicht weiterhelfen könnten. Vielen Dank schon mal im voraus.
Gruß,
AMiGA