Lookup und Swing-Tricks: Wie ich Events zu Lookup-Changes bekomme

Post to Twitter

Ich melde mich mal mit einer Kleinigkeit zurück.

Der Kunde wünscht sich bei der Auswahl von Nodes auch die Modifier der Tastatur zu ermitteln. Üblicherweise ist das gar nicht möglich, wenn man nur mit Lookup-Listener auf Results arbeitet (was ja die Regel sein sollte).

Da Swing ja singlethreaded ist und die meisten Lookup-Benachrichtigungen sich auch daran halten (außer man erzwingt Mutlithreading – was böse ist), kann man einfach über das AWT das aktuelle Event ermitteln:

AWTEvent currentEvent = EventQueue.getCurrentEvent();

Da AWTEvent recht schmalbrüstig ist, müssen wir es noch casten. Beispiel:

if ( currentEvent instanceof InputEvent ) {
  mods = ((InputEvent)currentEvent).getModifiers();
}

Ist kein aktuelles Event vorhanden, wird null zurückgegeben, was mit instanceof ohne NPE abgefangen wird. Dann erhalten wir aber auch keine Modifier.

Dieser Beitrag wurde unter Java, NetBeans Plattform abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

eMail-Benachrichtigung bei weiteren Kommentaren.
Auch möglich: Abo ohne Kommentar.