小编use*_*461的帖子

Java密钥绑定不起作用

我试图在JPanel上用Java创建键绑定.当我按下"w"按钮时,我想要执行某个动作.我遵循关于进行绑定的Java教程,但是actionPerformed方法没有执行(即没有文本打印出来).以下是我的测试GUI的全部代码,相关部分突出显示:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.KeyStroke;

@SuppressWarnings("serial")
public class Test extends JFrame{

private JPanel panel;

public Test(){
    super();
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(500,500);
    setLayout(new BorderLayout());
    setVisible(true);        
    panel = new JPanel();

    // HERE ARE THE KEY BINDINGS
    panel.getInputMap().put(KeyStroke.getKeyStroke('w'),"forward");
    panel.getActionMap().put("forward", new AbstractAction(){
        @Override
        public void actionPerformed(ActionEvent e){
            System.out.println("test");
        }
    });
    // END OF KEY BINDINGS

    add(panel, BorderLayout.CENTER);
}

public static void main(String[] args){
    new Test();     
}

}
Run Code Online (Sandbox Code Playgroud)

永远不会打印文本"test".我尝试过多次使用许多不同的变体,不同的键,我确保面板是焦点,但没有运气.我究竟做错了什么?

java swing input key-bindings onfocus

8
推荐指数
1
解决办法
7435
查看次数

标签 统计

input ×1

java ×1

key-bindings ×1

onfocus ×1

swing ×1