Fehlermeldung wegen FocusTraversalKeys

Status
Nicht offen für weitere Antworten.
Hallo Leute.

Da mein Chef im Programm gerne die Steuerung "etwas anders" als normal hätte, hab ich für alle Komponenten die Focus-Tasten geändert. (1. Tab, Strg+Tab und 2. BildAuf, BildAb).

Ich hab auf meiner Oberfläche auch eine JTextArea für die ich dasselbe gemacht habe.

Funzt alles soweit. :)

Für eine Importfunktion wird ein neuer Dialog aufgerufen. Dieser enthält ebenfalls eine JTextArea.

Leider bekomme ich immer folgende Fehlermeldungen, wenn versuche den Import-Dialog aufzurufen:


java.lang.IllegalArgumentException: focus traversal keys must be unique for a Component :!:
at java.awt.Component.setFocusTraversalKeys_NoIDCheck(Component.java:5815) :!:
at java.awt.Component.setFocusTraversalKeys(Component.java:5742) :!:
at java.awt.TextArea.<init>(TextArea.java:252)
at java.awt.TextArea.<init>(TextArea.java:145)
at ImportDialog.<init>(ImportDialog.java:37)
at MainFrame.actionPerformed(MainFrame.java:1119)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.AbstractButton.doClick(AbstractButton.java:289)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1113)
at javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseReleased(BasicMenuItemUI.java:943)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:231)
at java.awt.Component.processMouseEvent(Component.java:5100)
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)



Lasse ich auf meinem Import-Dialog die JTextArea weg bekomme ich keinen Fehler. ???:L

Vielleicht hat ja schon so jemand eine Ahnung was hier falsch läuft. Ansonsten werde ich versuchen das Problem ein wenig zu spezifizieren.


Danke schonmal im Voraus für eure Hilfe.

CU ap
 

thE_29

Top Contributor
also wenn ich richtig verstehe, soll bei dir der Tab key (also weiterspringen) auch von 3 anderen Tasten aus gehen?

Code:
    FocusManager fm = FocusManager.getCurrentManager();
    Set newKeys = new HashSet(fm.getDefaultFocusTraversalKeys(FocusManager.
        FORWARD_TRAVERSAL_KEYS));
//hier deine keys reinfügen!
//newKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0));
    fm.setDefaultFocusTraversalKeys(FocusManager.FORWARD_TRAVERSAL_KEYS,
                                    newKeys);

bin aber zu faul zum nachsehen, wie jetzt bild auf/runter heißen ;)
 
Nicht ganz. :wink:

Hab mir folgende Methode geschrieben, die mir für FocusForward "Tab" und "Bild Hoch" einstellt und für FocusBackward "Strg+Tab" und "Bild Runter".

Code:
public void setFocusKeys()
	{
//		 Ändern der Taste um den Fokus vorwärts zu bewegen
	    mf.set = new HashSet(
	        KeyboardFocusManager.getCurrentKeyboardFocusManager().getDefaultFocusTraversalKeys(
	            KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));
	    mf.set.clear();   // den momentanen key set löschen
	    mf.set.add(KeyStroke.getKeyStroke("PAGE_DOWN"));
	    mf.set.add(KeyStroke.getKeyStroke("TAB"));
	    KeyboardFocusManager.getCurrentKeyboardFocusManager().setDefaultFocusTraversalKeys(
	        KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, mf.set);
	    
	    // Ändern der Taste um den Fokus rückwärts zu bewegen
	    mf.set = new HashSet(
	        KeyboardFocusManager.getCurrentKeyboardFocusManager().getDefaultFocusTraversalKeys(
	            KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS));
	    mf.set.clear();   // den momentanen key set löschen
	    mf.set.add(KeyStroke.getKeyStroke("PAGE_UP"));
	    mf.set.add(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, InputEvent.CTRL_MASK));
	    KeyboardFocusManager.getCurrentKeyboardFocusManager().setDefaultFocusTraversalKeys(
	        KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, mf.set);

	}


Vorher wurden alle FocusKeys gelöscht.

Code:
public void killFocusKeys()
	{
		mf.set = new HashSet(
		        KeyboardFocusManager.getCurrentKeyboardFocusManager().getDefaultFocusTraversalKeys(
		            KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));
		mf.set.clear();
	    KeyboardFocusManager.getCurrentKeyboardFocusManager().setDefaultFocusTraversalKeys(
	        KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, mf.set);
	    KeyboardFocusManager.getCurrentKeyboardFocusManager().setDefaultFocusTraversalKeys(
	        KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, mf.set);
	}


Die oberste Methode funktionierte leider nicht für JTextArea, also hab ich sie leicht abgeändert auch dafür nochmal geschrieben und (nur für die der Hauptmaske) aufgerufen.


Meine Hauptmaske beinhaltet die JTextArea für die ich die Methode aufgerufen habe. Von der Funktionalität her alles kein Problem. Da kann ich mit "meinen" Tasten den Focus eins vor oder zurücksetzen.

Jetzt wollte ich eine Dialog erstellen. Auch dieser sollte eine (NEUE) JTextArea enthalten. Sobald ich jetzt versuche den Dialog aufzurufen (der die neue Area enthält) bekomme ich die Fehlermeldungen aus dem 1. Post.



Ja ja ich weiß. Das ist etwas verzwickt. Ich würde gerne den kompletten Quellcode posten, aber daß würde euer Mausrad nicht mitmachen (3000 Zeilen?). :wink:

CU ap
 

thE_29

Top Contributor
also meine methode musst du keinen componenten zuweisen, sondern die machst einmal und das geht für alle Componenten!

außerdem es ist nur Tab gesetzt, also ist das löschen net wirklich sinnvoll!

machs mal nach meiner methode in der du einfach sagst bei vorwärts addest du bild auf und bei rückwärts bild ab und strg tab (oder wie du das halt braucsht!)
 
@the_29:

Ertsmal Danke für deine Hilfe.

Die Fokusierung sollte erst NUR über die BildAuf/ BildAb- Tasten laufen, deshalb die killFocusKeys - Methode. :wink:
Das hat sich während dem Projekt aber noch geändert. Dadurch jetzt wieder den Standard (Tab, Strg+Tab) hinzugefügt.

Ich hatte übrigens (versehentlich) im Quelltext den Aufruf von killFocusKeys auskommentiert, deshalb auch die Fehlermeldungen... (vermute ich :wink: )

Jetzt tuts es wieder. :wink:

Danke trotzdem, denn das mit dem "adden" kommt für mich jetzt wohl eher in Frage. Danke.

CU ap
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Baerdoc Fehlermeldung bei Validierung mit controlsfx AWT, Swing, JavaFX & SWT 5
Juelin Fehlermeldung AWT, Swing, JavaFX & SWT 5
P Fehlermeldung: Error: Could not find or load main class set Caused by: java.lang.ClassNotFoundException: set AWT, Swing, JavaFX & SWT 5
V JavaFX Bild leer und keine Fehlermeldung AWT, Swing, JavaFX & SWT 21
L FX-Projekt: fast leere Fensterausgabe ohne Fehlermeldung AWT, Swing, JavaFX & SWT 6
P Swing Icon einfügen wirft eine Fehlermeldung AWT, Swing, JavaFX & SWT 3
S Scene Builder Fehlermeldung (Anfängerprobleme) AWT, Swing, JavaFX & SWT 0
S Scene Builder Fehlermeldung (Anfängerprobleme) AWT, Swing, JavaFX & SWT 8
Z Fehlermeldung AWT, Swing, JavaFX & SWT 3
N Verständnisproblem bei Fehlermeldung bei "showMessage" AWT, Swing, JavaFX & SWT 3
R AWT Ich verstehe die Fehlermeldung nicht. Was habe ich falsch gemacht? AWT, Swing, JavaFX & SWT 85
L java.lang.NullPointerException - Fehlermeldung AWT, Swing, JavaFX & SWT 2
J Event Handling Input auf String testen, Fehlermeldung ausgeben AWT, Swing, JavaFX & SWT 4
S JavaFX Fehlermeldung Root hasn't been set AWT, Swing, JavaFX & SWT 2
T Unerklärliche Fehlermeldung AWT, Swing, JavaFX & SWT 5
K Fehlermeldung mit Interface AWT, Swing, JavaFX & SWT 9
L ImageIcon auf JPanel wird nicht angezeigt(keiner Fehlermeldung) AWT, Swing, JavaFX & SWT 11
L JButton mit ImageIcon/Fehlermeldung AWT, Swing, JavaFX & SWT 1
R Swing JOptionPane Fehlermeldung- bitte um Hilfe! AWT, Swing, JavaFX & SWT 4
F Unverständliche Fehlermeldung AWT, Swing, JavaFX & SWT 5
J Fehlermeldung adding a window to a container AWT, Swing, JavaFX & SWT 9
C Swing Fehlermeldung in einem Dialog anzeigen AWT, Swing, JavaFX & SWT 2
S SWT Fehlermeldung ausgeben AWT, Swing, JavaFX & SWT 7
D SWT "Hello World" - Fehlermeldung AWT, Swing, JavaFX & SWT 8
DARK_ZERATO2 GUI Fehlermeldung mit sound AWT, Swing, JavaFX & SWT 4
ModellbahnerTT Fehlermeldung: StackOverflowError AWT, Swing, JavaFX & SWT 8
O Fehlermeldungs-Fenster je nach Fehlermeldung AWT, Swing, JavaFX & SWT 2
R Fehlermeldung: ". is not abstract" AWT, Swing, JavaFX & SWT 5
B Swing Fehlermeldung AWT, Swing, JavaFX & SWT 6
J Eigene Fehlermeldung in AWT erzeugen AWT, Swing, JavaFX & SWT 2
M JTable. Beim löschen der Zeilen Fehlermeldung AWT, Swing, JavaFX & SWT 22
D Unverständliche Fehlermeldung AWT, Swing, JavaFX & SWT 5
A Fehlermeldung beim Bild speichern AWT, Swing, JavaFX & SWT 4
D JavaFX Nullpointerexception wegen TableView AWT, Swing, JavaFX & SWT 2
pkm Frage wegen java.lang.IllegalStateException bei DocumentListener AWT, Swing, JavaFX & SWT 4
T JTextPane ignoriert HTML Zeilenumbruch <br> tag wegen eigenem HTMLEditorKit AWT, Swing, JavaFX & SWT 5
D OSX nosound wegen GC AWT, Swing, JavaFX & SWT 7
J JApplet langsam wegen vielen Tooltips? AWT, Swing, JavaFX & SWT 36
frankred Swing Canvas nach "Window-resize" neu Zeichnen lassen wegen Anzeigefehler AWT, Swing, JavaFX & SWT 4
M Problem mit Layout wegen Textarea AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben