仅在 Windows 10 中,Java Keyevent 不起作用..在 Windows 7 和 8 中它运行良好..我不知道为啥

Posted

技术标签:

【中文标题】仅在 Windows 10 中,Java Keyevent 不起作用..在 Windows 7 和 8 中它运行良好..我不知道为啥【英文标题】:only in windows10, Java Keyevent doesn't work.. in Windows7 and 8 it works well.. I don't know why仅在 Windows 10 中,Java Keyevent 不起作用..在 Windows 7 和 8 中它运行良好..我不知道为什么 【发布时间】:2017-06-16 13:53:34 【问题描述】:
    我正在制作 KeyEvent 测试程序,但它在 Windows10 中不起作用。 这个程序在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();
        
    
    

【问题讨论】:

啊,KeyListener,永远摧毁开发者的生命。 KeyListener 在最好的时候是善变的,我认为你很幸运它在其他平台上(始终如一地)工作。我建议您尝试使用Key Bindings API instead 【参考方案1】:

如果您要为 JLabel 添加 KeyListener。

注意:有些组件不像 JLabel 那样可聚焦。

你可以试试那个。

确保组件的 isFocusable 方法返回 true。此状态允许组件接收焦点。例如,您可以通过在标签上调用 setFocusable(true) 方法为 JLabel 组件启用键盘焦点。

【讨论】:

以上是关于仅在 Windows 10 中,Java Keyevent 不起作用..在 Windows 7 和 8 中它运行良好..我不知道为啥的主要内容,如果未能解决你的问题,请参考以下文章

为啥 gRPC 仅在 Windows 上每秒抛出“已建立的连接被主机中的软件中止”?

JPG 仅在 Android 中不加载

为啥 LWJGL 仅在 Windows 上在以前和当前的游戏状态之间闪烁?

Java Selenium 3.3.1 和 geckodriver 0.15.0 不在 Windows 10 上等待

Winsock 连接失败并显示 WSAEFAULT |仅在 Windows 11 上出现错误

仅在 Java 代码中构建 HTML