2017-01-31 8 views
0
  1. Я делаю программу тестирования KeyEvent, но она не работает в Windows10.
  2. эта программа хорошо работает в Windows7 и 8 версии .. Не знаю почему ..
  3. Проблема с клавиатурой ..? или другие ..?только в windows10, Java Keyevent не работает .. в Windows7 и 8 работает хорошо .. Не знаю почему

    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

Ах, 'KeyListener', разрушающий разработчиков, живет с навсегда. 'KeyListener' непостоянный в лучшие времена, и я думаю, вам просто повезло, что он работал (последовательно) на других платформах. Я предлагаю вам попробовать использовать [Key Bindings API вместо этого] (https://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html) – MadProgrammer

ответ

0

Если вы добавляете KeyListener для JLabel.

Примечание: Некоторые компоненты не могут быть сфокусированы, как JLabel.

Вы можете попробовать этот.

Убедитесь, что метод isFocusable компонента возвращает true. Это состояние позволяет компоненту получать фокус. Например, вы можете включить фокус клавиатуры для компонента JLabel, вызывая метод setFocusable (true) на ярлыке.