使用键绑定的java
我正在做一些非常基本的编码,只是试图学习键绑定背后的基本概念。这一切看起来都很简单,但我的逻辑或结构有问题,使我的代码无法按我希望的方式执行
这是我的密码
public class Board {
ButtonListener buttonlistener;
EnterAction enterAction;
public Board(){
JFrame skeleton = new JFrame();
skeleton.setDefaultCloseOperation(EXIT_ON_CLOSE);
skeleton.setVisible(true);
skeleton.setSize(400, 400);
buttonlistener = new ButtonListener();
enterAction = new EnterAction();
JPanel panel = new JPanel();
panel.setBackground(Color.BLACK);
JButton button = new JButton("button");
button.addActionListener(buttonlistener);
panel.add(button);
skeleton.add(panel);
panel.getInputMap().put(KeyStroke.getKeyStroke("s"), "doEnterAction");
panel.getActionMap().put("doEnterAction", enterAction);
}
public class ButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("button pressed");
}
}
public class EnterAction extends AbstractAction{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("enter pressed");
}
}
public static void main(String[] args){
new Board();
}
所以,这应该很简单。正如你所看到的,我只是想让它在你按下enter键时打印出“按下enter键”,但它不会打印出任何内容(除非你点击上面代码中显示的按钮)。此外,在eclipse中,Entreaction类用黄色下划线,我认为它可能没有被正确调用,但我不知道为什么它不会被正确调用
非常感谢您的帮助,谢谢
# 1 楼答案
改变
到
还有
skeleton.setDefaultCloseOperation(EXIT_ON_CLOSE);
参数必须为
JFrame.EXIT_ON_CLOSE
或仅输入数字3
# 2 楼答案
我认为Azad和MadProgrammer是正确的,我只需要做一个简单的改变,除了他们建议的,让程序运行。我已经为代码中的三个项目编号,作为注释:(复制并粘贴,您就可以开始了)
以下是截图: