Caps-Lock Überprüfung gibt falschen Wert zurück

Hallo!

Ich habe die folgende Situation, ich habe eine Anwendung, welche einem Anwender anzeigt, ob dieser Caps-Lock aktiviert hat. Sollte der Anwender das JFrame (Window) minimieren/nicht mehr fokussieren, möchte ich nachdem der Anwender das Window wieder auswählt, die Überprüfung durchführen, weil der Anwender in dieser Zeit die Caps-Lock-Taste z.B. aktiviert haben könnte.

Hier mal ein kleines Beispielprogramm:

Java:
JFrame frame;



public example() {

    frame = new JFrame();

    frame.setSize(400, 400);

    frame.setVisible(true);



    frame.addWindowFocusListener(new WindowFocusListener() {

        @Override

        public void windowGainedFocus(WindowEvent e) {

            System.out.println("Caps Lock Status: " + Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK));

        }



        @Override

        public void windowLostFocus(WindowEvent e) {

            // nothing to do

        }

    });



}

Jetzt ist aber die folgende Situation festzustellen, der Anwender hat die Anwendung offen mit deaktivierten Caps-Lock. Daraufhin minimiert (verliert Fokus) der Anwender das Window. Während die Anwendung nicht fokussiert ist, aktiviert dieser den Caps-Lock. Dann wählt er das Window wieder aus (fokusiert es) mit aktivierten Caps-Lock. Anhand meines Beispiel-Codes erwarte ich, dass die Anwendung mir TRUE als Caps-Lock Status zurückgibt, doch ist die Rückgabe FALSE. Nach einigen Tests konnte ich feststellen, dass die Anwendung immer den letzten festgestellten Caps-Lock Status, bevor die Anwendung minimiert wurde, zurückgibt.

Hat jemand eine Idee woran dies liegt oder einen Änderungsvorschlag, vielen Dank!
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben