JPanel에서 Java로 키 바인딩을 만들려고합니다. 'w'버튼을 누르면 특정 동작이 실행되기를 원합니다. 바인딩을 만들 때 Java 자습서를 따르지만 actionPerformed 메서드는 실행되지 않습니다 (즉, 텍스트가 인쇄되지 않음). 다음은 내 테스트 GUI의 코드 전체이며 해당 부분이 강조 표시되어 있습니다.Java 키 바인딩이 작동하지 않습니다.
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();
}
}
텍스트 "test"는 절대로 인쇄되지 않습니다. 많은 변형과 다른 키들로 여러 번 시도해 보았습니다. 패널에 초점이 맞춰 졌는지 확인했지만 운이 없었습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
예를으로 업데이트 자세한 내용
에 대한및 How to use Key Bindings, 당신은' "W"'사용하고 생각했다. 실제 예제로 업데이트 – MadProgrammer