我正在做一些非常基本的编码,只是想学习键绑定背后的基本概念。这一切看起来都非常简单,但是我的逻辑或结构存在问题,导致我的代码无法按照我想要的方式执行。
这是我的代码
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();
}
所以,它应该很简单。正如你所看到的,我只是想在你按下回车键时让它打印出“按下回车键”,但它没有打印出任何东西(除非你点击上面代码中也显示的按钮)。另外,在eclipse中, EnterAction 类用黄色下划线,我认为它可能没有被正确调用,但我不知道为什么它不会。
任何帮助表示赞赏,谢谢。