bloggers bloggers

Marco Napolitano
Messaggi: 68
Stelle: 0
Data: 15/11/17
Jader Jed Francia
Messaggi: 50
Stelle: 0
Data: 22/09/17
Ezio Lombardi
Messaggi: 9
Stelle: 0
Data: 23/06/17
Chiara Mambretti
Messaggi: 25
Stelle: 0
Data: 27/02/17
Serena Traversi
Messaggi: 3
Stelle: 0
Data: 21/07/16
Francesco Falanga
Messaggi: 8
Stelle: 0
Data: 14/06/16
Antonio Musarra
Messaggi: 2
Stelle: 0
Data: 18/11/13
Simone Celli Marchi
Messaggi: 6
Stelle: 0
Data: 09/07/13
marcello marangio
Messaggi: 4
Stelle: 0
Data: 05/07/13
Marco Mancini
Messaggi: 1
Stelle: 0
Data: 05/06/13
Indietro

Swing & KeyBindings

Problema: vorrei che, premendo un tasto funzione, l'applicazione swing che stò realizzando esegua un'operazione, senza che io utilizzi il mouse per triggerarli.
Ad esempio, vorrei che premendo il tasto F2, l'applicazione lanciasse un thread che controlla la mia casella di posta e scarichi i messaggi in background, senza che io vada sul tasto apposito e lo prema.

Gli strumenti
Il JDK mette a disposizione, sugli oggetti che derivano da JComponent, due metodi per fare questa cosa:
component.getInputMap() <- permette di creare un map tra la pressione di tasti e un nome logico di azione da compiere
component.getActionMap() <- permette di creare un map tra un nome logico di azione da compiere e l'AbstractAction che verra' effettivamente eseguita

Il codice:
JPanel component = new JPanel();
...
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)

.put(KeyStroke.getKeyStroke("F2"), "scaricaPosta");
component.getActionMap(JComponent.WHEN_IN_FOCUSED_WINDOW)

.put("scaricaPosta", new ScaricaPostaAction());

That's all! :)
Quando, in qualsiasi punto della nostra applicazione, premeremo il tasto F2, questo lancera' la nostra ScaricaPostaAction().
Ovviamente sempre se non premo F2 su un componente particolare, sul quale magari ho impostato che F2 faccia un'altra cosa.
Si veda la documentazione di riferimento per i dettagli del caso!

Riferimenti
http://java.sun.com/docs/books/tutorial/uiswing/misc/keybinding.html

Have fun! :)

Precedente
Commenti
Nessun commento. Vuoi essere il primo.