Problem mit kombiniertem global Hotkey

Oldboii

Mitglied
Hi Leute,

ausnahmsweise, will ich nicht wissen wie ich global hotkeys umsetze oder wie ich Strg+G etc. umsetze.
Allerdings hab ich das Problem, dass ich die Hotkeykombination nicht ordentlich benutzen kann.
Zwei meiner Events (Strg+G und Strg+E) sind mit 2 verschiedenen JInternalFrames verbunden die eben setVisible() umschalten sollen.
Jetzt funktioniert das ganze nur, wenn ich z.B. Strg+E extremst schnell und gleichzeitig drücke.. lasse ich Strg nur ein wenig später oder früher los, verschwindet mein eben erschienenes JIFrame wieder.

Java:
public Hotkey() {
	Toolkit.getDefaultToolkit().getSystemEventQueue().push(
            new EventQueue() {
                protected void dispatchEvent(AWTEvent event) {
                    if (event instanceof KeyEvent) {
                        KeyEvent keyEvent = (KeyEvent) event;
                        if (keyEvent.getID() == KeyEvent.KEY_PRESSED
                                && (keyEvent).getKeyCode() == KeyEvent.VK_ESCAPE) {
                        		gui.ausloggen();
                        }if (keyEvent.isControlDown()
                                && (keyEvent).getKeyCode() == KeyEvent.VK_G) {
                        	gui.HotKeyTools();
                        }if (keyEvent.isControlDown()
                                && (keyEvent).getKeyCode() == KeyEvent.VK_E) {
                        	gui.HotKeyParts();
                        }
                    }
                    super.dispatchEvent(event);
                }
            });
	}

Hier die Methode.
Übrigens gleich vorweg,
Java:
}if (keyEvent.isControlDown()) { if ((keyEvent).getKeyCode() == KeyEvent.VK_E){...}}
hab ich auch schon probiert.:noe:
 
Hallo
mit Deiner Bedingung
Java:
if (keyEvent.isControlDown() && (keyEvent).getKeyCode() == KeyEvent.VK_G) {
 gui.HotKeyTools();
}
hast Du u.U. 3 Events kurz nacheinander:
  1. KEY_PRESSED
  2. KEY_TYPED
  3. KEY_RELEASED
Wenn Du die Bedingung mit
Java:
keyEvent.getID() == KeyEvent.KEY_RELEASED
erweiterst, sollte es gehen:

Java:
if (keyEvent.isControlDown() && (keyEvent).getKeyCode() == KeyEvent.VK_G 
&& keyEvent.getID() == KeyEvent.KEY_RELEASED) {
 gui.HotKeyTools();
}

Viele Grüße
 

Zurück
Oben