キーバインドの背後にある基本的な概念を学ぼうとしているだけで、非常に基本的なコーディングを行っています。すべてが非常に簡単に思えますが、ロジックまたは構造に何か問題があり、コードが思いどおりに実行されていません。
これが私のコードです
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 では、EnterAction クラスに黄色の下線が引かれています。正しく呼び出されていない可能性があると思いますが、そうでない理由はわかりません。
どんな助けでも大歓迎です、ありがとう。