Sto gestendo alcuni MouseEvent in un'applicazione GUI utilizzando Java Swing.Rilevamento dei modificatori Shift su MouseEvent generato da click in swing
Poiché ora stavo analizzando gli eventi del mouse all'interno del metodo mousePressed, solo per determinare se è stato fatto clic con il tasto sinistro o destro su .
Il mio codice è:
public void mousePressed(MouseEvent me) {
if (me.getModifiers == InputEvent.BUTTON1_DOWN_MASK){
//left click
}else if (me.getModifiers == InputEvent.BUTTON3_DOWN_MASK){
//right click
}
Ora la mia domanda sta diventando sempre più complicato e ho anche bisogno di controllare se il tasto Maiusc è stato premuto mentre il mouse è stato lasciato clic. Mi piacerebbe fare qualcosa di simile:
public void mousePressed(MouseEvent me) {
if (me.getModifiers == InputEvent.BUTTON1_DOWN_MASK && me.isShiftDown()){
//left click
}
Ora, questo non funziona. In particolare, se faccio clic con il tasto sinistro del mouse tenendo premuto SHIFT, IsShiftDown restituisce true (mi stavo aspettando questo), ma ora sembra che anche i modificatori vengano modificati e il confronto con BUTTON1_DOWN_MASK non vada a buon fine.
me.getModifiers == InputEvent.BUTTON1_DOWN_MASK //failed..modifiers are changed
Cosa sto sbagliando? Come posso risolvere il mio codice?
hai ragione. Ad ogni modo il tuo codice (me.getModifiers() e InputEvent.BUTTON1_DOWN_MASK) non restituisce un valore booleano – Heisenbug
Scusa, hai ragione. Ora risolto. –
mi dispiace. Sono un po 'confuso. Sembra funzionare esattamente nel modo opposto: (me.getModifiers() e InputEvent.BUTTON1_DOWN_MASK) == 0. Comunque ... hai capito il punto. grazie – Heisenbug