PDA

Visualizza la versione completa : keyEvent Java (tasto tab)


assioma
10-05-2004, 17:50
Perchè il mio keyEvent non intercetta il tasto tab ma invio si?
ovvero perchè se premo invio esegue il metodo consuma e se premo tab no?



class CodMerceAscoltatore implements KeyListener{

private void __forwardEventToButton(KeyEvent keyEvent){
}
public void keyTyped(KeyEvent keyEvent) {
}
public void keyPressed(KeyEvent keyEvent) {
int ch = keyEvent.getKeyCode();

// Tab = 9
// Invio = 10 (con invio entra con tab no!
if (ch == 10 | ch ==9)
consuma(keyEvent,ch);

}
public void keyReleased(KeyEvent keyEvent) {


}
void consuma(KeyEvent keyEvent,int ch){
System.out.println("tasto "+ch);
}


}

Xadoom
10-05-2004, 18:30
Non capisco quel Tab=9 e Invio=10, sei sicuro siano quelli i codici??
IO farei:


if(ch = VK_TAB || ch = VK_ENTER)....

Dai una guardata qui:
http://java.sun.com/j2se/1.5.0/docs/api/java/awt/event/KeyEvent.html
:ciauz:

assioma
10-05-2004, 18:39
Ho provato anche così:

char c = keyEvent.getKeyChar();
char c = keyEvent.getKeyChar();

if (c == KeyEvent.VK_ENTER || c == KeyEvent.VK_TAB)
consuma(keyEvent,c);




ma funziona solo per invio e non tab :(

LeleFT
11-05-2004, 00:23
Eh già... credo che non si possa intercettare la pressione del TAB, in quanto è il tasto che sposta il focus e, probabilmente, viene intercettato da qualche altra parte prima del Listener.


Ciao. :ciauz:

Xadoom
11-05-2004, 13:28
Mmm....mi pare molto strano però...forse una ricerca sul sito Sun....ora vedo! :ciauz:

Xadoom
11-05-2004, 13:33
Forse questo dovrebbe essere risolutivo:


Version note: This page reflects the focus API introduced in released 1.4. As of that release, the focus subsystem consumes focus traversal keys, such as Tab and Shift Tab. If you need to prevent the focus traversal keys from being consumed, you can call

component.setFocusTraversalKeysEnabled(false)

on the component that is firing the key events. Your program must then handle focus traversal on its own. Alternatively, you can use a KeyEventDispatcher to pre-listen to all key events. The focus page has detailed information on the focus subsystem.
Trovato qui:
http://java.sun.com/docs/books/tutorial/uiswing/events/keylistener.html
:ciauz:

LeleFT
11-05-2004, 15:52
Ottimo! Bisogna, quindi, disattivare il gestore del focus predefinito.


Ciao. :ciauz:

Xadoom
11-05-2004, 19:24
:metallica La cosa che amo di più di Java è la reperibilità delle informazioni :metallica

Loading