Windows与Mac之间密钥检测的Java差异

Tho*_*orn 2 java keyboard macos user-interface swing

我有一个带有键监听器的JList,使用户可以轻松地从列表中删除一个项目.在Windows上,它工作正常.您点击删除键,该项目被删除.在mac上,程序不响应删除键.我正在使用KeyEvent.VK_DELETE,我认为这是一种检测特殊键的平台中立方式.我应该采用不同的方式检测Mac上的按键吗?

    studentJList.setModel(studentListModel);  // a custom model I wrote
    studentJList.addKeyListener(new KeyListener() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_DELETE) {
                studentListModel.remove(studentJList.getSelectedIndex());
                studentJList.revalidate();
            }
        }

        @Override
        public void keyReleased(KeyEvent e) { }

        @Override
        public void keyTyped(KeyEvent e) { }
    });
Run Code Online (Sandbox Code Playgroud)

Rob*_*bin 7

使用键绑定而不是键侦听器,所有平台上的行为都是相同的.

另请参阅KeyAdapter侦听器在Windows中运行,而不是在Mac上运行,这或多或少是同一个问题,该解决方案也适用于您的问题.