Uso una JFrame non decorata con una barra del titolo personalizzata e un resizer personalizzato. Tutto funziona bene ma quando creo un JFrame non decorato, perdo il supporto per i collegamenti dei tasti Windows-Left/Right (sembra che sia nativo implementato da Windows). Voglio reimplementare questa funzionalità per la mia applicazione. Il mio problema: posso rilevare in un ascoltatore di chiavi se il tasto Windows è premuto, ma non riesco a rilevare se un altro tasto (sinistra/destra nel mio caso) viene premuto insieme al tasto Windows (nessun modificatore WINDOWS_MASK_DOWN in InputEvent). Probabilmente qualcuno conosce una soluzione alternativa?Supporto per Windows-Left e Windows-Right in JFrames non decorati
Ecco il mio codice:
import java.awt.BorderLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
public class HeadlessFrameTest {
public static void main(String[] args) {
final JFrame frm = new JFrame("Test");
final JTextField field = new JTextField();
frm.add(field, BorderLayout.NORTH);
field.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
System.out.println(e);
}
});
frm.setUndecorated(true);
frm.setSize(500, 550);
frm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frm.setVisible(true);
}
}
+1 '(nessun modificatore WINDOWS_MASK_DOWN in InputEvent) .' Nessun evento viene nemmeno generato quando si preme il tasto destro/sinistro (in JDK7), sebbene venga generato un evento per l'evento keyReleased. Questo mi dice che Windows sta intercettando l'evento. È strano che la funzionalità tasto destro/sinistro non funzioni perché il tasto Windows + Su fa ingrandire la finestra, sebbene Windows + Giù non ripristini la finestra. Quindi ci sono sicuramente delle incongruenze. Non conosco la soluzione. – camickr
Eventuali aggiornamenti su questo? Sto avendo lo stesso problema e sto cercando una soluzione a questo. – Sebastian