Frage

Ich habe einen Swing-GUI mit einem Registerteilfenster im Norden. Mehrere wichtige Ereignisse an seinem Eingang Karte hinzugefügt werden:

InputMap paneInputMap = pane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
paneInputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_E, KeyEvent.CTRL_MASK ), "finish");
paneInputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_F1, KeyEvent.CTRL_MASK ), "toggletoolbar");

Wenn das Registerteilfenster oder eine andere Taste in einer Symbolleiste den Fokus hat, Strg + F1 keine Funktion hat. Wenn eine andere Komponente fokussiert ist (beispiels JTree) Ctrl + F1 führt die Aktion aus.

Das Problem ist, dass es workes überall, wenn ich den Key Code zu ändern z.B. VK_F2.

Mit der Taste F1 is'nt anderswo im Programm verwendet.

Jede Idee?

Danke, André

Edit: Eine Volltextsuche in den Java-Quellcode gab die Antwort: Die ToolTipManager registeres die Taste Strg + F1 die angezeigt werden Tooltip Text, wenn die Tastenkombination gedrückt wird. Also, wenn ein Knopf mit einem Tooltip fokussiert ist, Strg + F1 durch die ToolTipManager behandelt wird. Ansonsten meine Aktion aufgerufen wird.

War es hilfreich?

Lösung

Damit diese eine Antwort bekommt, ist hier die Lösung aus dem Bearbeiten in der Frage kopiert. ; -)

  

Die ToolTipManager registeres den Schlüssel    Strg + F1 den Tooltip-Text angezeigt werden, wenn   die Tastenkombination gedrückt wird. Also, wenn   eine Schaltfläche mit einem Tooltip fokussiert ist,    Strg + F1 wird durch die behandelt   ToolTipManager. Ansonsten gilt meine Klage   genannt.

Andere Tipps

Auch die OS retargets sein die F1 Schlüssel? Installieren Sie einen Schlüssel Zuhörer und sehen, welche Ereignisse behandelt werden.

BTW:. Es würde helfen, wenn Sie Ihre Frage bearbeiten könnte und einige überprüfbare Code einfügen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top