2011-12-14 14 views
6

Sono un programmatore Java esperto, ma un principiante Swing quindi per favore abbiate pazienza con me.Come focalizzarsi su JPopupMenu

Desidero avere una finestra JPopup che abbia lo stato attivo della tastiera. Voglio rispondere ai tasti freccia, uscire (per chiudere il menu) e Invio (per richiamare l'elemento). Devo aggiungere un KeyListener al menu e codificare tutto questo da solo, oppure esiste una sorta di "modalità" che posso impostare per attivare questo comportamento che sembra debba essere standard.

La sezione di esercitazione Swing standard su JPopupMenus parla solo di mnemonici e acceleratori. Non voglio particolarmente quelli.

Difficile credere che questo sia totalmente contro la grana di JPopupMenu.

Qual è il modo migliore per ottenere qualcosa come voglio implementato?

risposta

6

Una volta eseguito il numero jpopupMenu.show(Component invoker, int x, int y), risponderà automaticamente alla tastiera come desiderato. Se questo non funziona, allora potrebbe essere necessario per risolvere qualche altro problema cioè qualche altro componente è strappando attenzione dal menu a quando non dovrebbe, ecc

+0

hmm. Stavo usando setVisible (true) piuttosto che show() ma vedo che show() è deprecato a favore di setVisible()/ –

+0

Stavo parlando del metodo show (Component invoker, int x, int y) che ho usato in il mio codice Scusate la confusione. –

+0

Questa è la risposta. Non ero legato correttamente a un componente. La risposta di Trashgod era anche necessaria per farlo. Grazie a tutti e due. –

3

Invece di KeyListener, io consiglierei di aggiungere Action casi al vostro JPopupMenu. Utilizzare setComponentPopupMenu() per aggiungere il popup al pannello.

+1

grazie, il tuo contributo, insieme con AKJ sopra, ha funzionato. –

+0

Eccellente; come riferimento, c'è un esempio recentemente aggiornato [qui] (http://stackoverflow.com/a/5129757/230513). – trashgod