2017-01-31 3 views
0
  1. Ich mache KeyEvent Test-Programm, aber es funktioniert nicht in Windows10.
  2. dieses Programm funktioniert gut in Windows7 und 8 Version .. Ich weiß nicht warum.
  3. KeyBoard Problem ..? oder andere..?nur in Windows10, Java KeyEvent funktioniert nicht .. in Windows7 und 8 funktioniert es gut .. Ich weiß nicht warum

    class KeyFrame extends JFrame{ 
    
         public KeyFrame(){ 
         KeyTest t = new KeyTest(); 
         setContentPane(t); 
         this.setSize(700, 700); 
    
         setSize(300,300); 
         setVisible(true); 
         t.requestFocus(); 
        } 
    } 
    
    public class KeyTest extends JPanel{ 
    
        JLabel la = new JLabel("Input"); 
    
        public KeyTest(){ 
         add(la); 
         this.addKeyListener(new KeyAdapter() { 
          public void keyPressed(KeyEvent e){ 
           String data = e.getKeyText(e.getKeyCode()); 
           la.setText(data + "Pressed"); 
    
           if(e.getKeyCode() == KeyEvent.VK_F1){ 
            setBackground(Color.GREEN); 
           } 
           else if(e.getKeyChar() == '%'){ 
            setBackground(Color.YELLOW); 
           } 
          } 
         }); 
        } 
    
        public static void main(String[] ar){ 
         new KeyFrame(); 
        } 
    } 
    
+3

Ah, 'KeyListener', zerstört Entwickler für immer für immer. 'KeyListener' ist in den besten Zeiten launisch und ich denke, Sie haben einfach Glück gehabt, dass es (konsequent) auf den anderen Plattformen funktioniert hat. Ich schlage vor, dass Sie stattdessen das [Key Bindings API] verwenden (https://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html). – MadProgrammer

Antwort

0

Wenn Sie KeyListener für JLabel Zugabe werden.

Hinweis: Einige Komponenten sind nicht fokussierbar wie JLabel.

Sie können das versuchen.

Stellen Sie sicher, dass die isFocusable-Methode der Komponente true zurückgibt. Dieser Status ermöglicht es der Komponente, den Fokus zu erhalten. Sie können beispielsweise den Tastaturfokus für eine JLabel-Komponente aktivieren, indem Sie die Methode setFocusable (true) für die Beschriftung aufrufen.

Verwandte Themen