ich registriere in einem JPanel mehrere actions, jede mit folgenden zwei zeilen:
(die getter methoden wie getActionCommandKey() sind nur convenience-methoden)
dies funktioniert wunderbar, bis ich auf eine JEditorPane klicke (die nicht zu diesem JPanel gehört). ich habe nun erkannt, dass es am Fokus liegt. wenn sich das JPanel() mittels grabFocus() wieder den Fokus holt, können die Actions auch wieder per Tastatur ausgelöst werden.
nun mein Problem: verstehe ich JComponent.WHEN_IN_FOCUSED_WINDOW richtig? also dass es eigentlich auch funktionieren müsste, wenn eine der anderen komponenten desselben Fensters (JFrame in meinem Fall) den Fokus hat?
ich nehme an, dass das problem ist, dass die EditorPane alle texteingaben schluckt. stimmt das?
wenn ja, kann ich das irgendwie verhindern? (setEditable(false) habe ich bereits gesetzt) da ich die editorpane nur verwende, um text darzustellen, will ich eigentlich nicht, dass meine eingaben geschluckt werden.
danke!
Code:
getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
action.getAcceleratorKey(), action.getActionCommandKey());
getActionMap().put(action.getActionCommandKey(), action);
(die getter methoden wie getActionCommandKey() sind nur convenience-methoden)
dies funktioniert wunderbar, bis ich auf eine JEditorPane klicke (die nicht zu diesem JPanel gehört). ich habe nun erkannt, dass es am Fokus liegt. wenn sich das JPanel() mittels grabFocus() wieder den Fokus holt, können die Actions auch wieder per Tastatur ausgelöst werden.
nun mein Problem: verstehe ich JComponent.WHEN_IN_FOCUSED_WINDOW richtig? also dass es eigentlich auch funktionieren müsste, wenn eine der anderen komponenten desselben Fensters (JFrame in meinem Fall) den Fokus hat?
ich nehme an, dass das problem ist, dass die EditorPane alle texteingaben schluckt. stimmt das?
wenn ja, kann ich das irgendwie verhindern? (setEditable(false) habe ich bereits gesetzt) da ich die editorpane nur verwende, um text darzustellen, will ich eigentlich nicht, dass meine eingaben geschluckt werden.
danke!