|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2000
Città: Salerno
Messaggi: 4338
|
[java] Gestione keyevent
Salve raga
ho creato una piccola applicazione tramite swing : una finestra con textfield e button... ora vorrei fare in modo che alla pressione del tasto asterisco venga effettuata una determinata operazione ma non ho successo... Il codice usato è il seguente Codice:
this.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyChar()==java.awt.event.KeyEvent.VK_ASTERISK) {
System.out.println("prova");
}//fine enter
}
});
__________________
Doc : "Ovviamente, il continuum temporale è stato interrotto creando questa nuova temporale sequenza di eventi risultante in questa realtà alternativa" Marty : ...
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Usa getKeyCode (getKeyCode() == KeyEvent.VK_ASTERISK) al posto di getKeyChar e "this" dev'essere il campo di testo.
altrimenti intercetta l'evento keyTyped e non il keyPressed, sempre sul campo di testo. Poi che this debba essere il campo di testo dipende in verità dalla necessità che l'evento si attivi alla scrittura del * nel campo o semplicemente alla sua pressione ma non stiamo qui a scriverci un romanzo.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2000
Città: Salerno
Messaggi: 4338
|
Ho usato la this in quanto vorrei che sia il programma a catturare l'evento non il textfield...
Praticamente io ho un pulsante "salva" che memorizza i contenuti dei vari textfield in un database... Vorrei che alla pressione dell'asterisco mi venga avviato il "salva"...
__________________
Doc : "Ovviamente, il continuum temporale è stato interrotto creando questa nuova temporale sequenza di eventi risultante in questa realtà alternativa" Marty : ...
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Se è una funzione da "tasto rapido" allora usi un KeyStroke e non un key listener. Che funziona come un key listener ma ascolta gli eventi prima che siano distribuiti ai diversi componenti.
Codice:
KeyStroke ks = KeyStroke.getKeyStroke(KeyEvent.VK_ASTERISK, 0);
Action saveAction = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
//da qui richiami il codice che esegue il salvataggio
}
};
InputMap inputMap = this.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
inputMap.put(ks, "salva");
ActionMap actionMap = this.getActionMap();
actionMap.put("salva", saveAction);
Nota che dopo puoi usare saveAction come "action" del pulsante salva.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2000
Città: Salerno
Messaggi: 4338
|
Beh, ho il jframe che contiene 3 jpanel...
Il jframe non riconosce getInputMap e getActionMap Però dal jpanel (uno dei 3 qualsiasi) non ottengo il risultato sperato...
__________________
Doc : "Ovviamente, il continuum temporale è stato interrotto creando questa nuova temporale sequenza di eventi risultante in questa realtà alternativa" Marty : ...
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Prova un po' ad usare VK_P anzichè VK_ASTERISK (cioè la p anzichè il *). L'asterisco in effetti non me lo prende...
Edit: KeyStroke.getKeyStroke("shift PLUS") per l'asterisco. In effetti è anche logico, nel senso che il keystroke non prende il carattere che sarebbe digitato ma la combinazione di tasti che devi premere per digitarlo.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! Ultima modifica di PGI-Bis : 27-02-2012 alle 21:11. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:27.



















