Tôi đang cố tạo các ràng buộc chính trong Java trên JPanel. Tôi muốn có một hành động nhất định để thực hiện khi tôi nhấn nút 'w'. Tôi làm theo hướng dẫn Java về cách tạo các ràng buộc, nhưng phương thức actionPerformed không thực thi (tức là không có văn bản in ra). Sau đây là toàn bộ mã cho GUI thử nghiệm của tôi, với phần liên quan được đánh dấu:Ràng buộc khóa Java không hoạt động
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();
}
}
Văn bản "kiểm tra" không bao giờ được in. Tôi đã thử nhiều lần với nhiều biến thể khác nhau, các khóa khác nhau và tôi đảm bảo bảng điều khiển đang được tập trung, nhưng không có may mắn. Tôi đang làm gì sai?
đã không nhận thấy bạn đang sử dụng ' 'w'', nghĩ bạn đang sử dụng' "w" '. Đã cập nhật với ví dụ hoạt động – MadProgrammer