Ich versuche, Tastenbelegungen in Java auf einem JPanel zu machen. Ich möchte eine bestimmte Aktion ausführen, wenn ich die Taste 'w' drücke. Ich befolge das Java-Tutorial zum Erstellen von Bindungen, aber die actionPerformed-Methode wird nicht ausgeführt (d. H., Kein Text wird ausgegeben). Das Folgende ist die Gesamtheit des Code für meinen Test GUI, mit dem entsprechenden Teil hervorgehoben:Java Key Bindings funktioniert nicht
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();
}
}
Der Text „Test“ wird nie gedruckt. Ich habe viele Male mit vielen verschiedenen Varianten, verschiedenen Schlüsseln ausprobiert, und ich stelle sicher, dass das Panel im Fokus steht, aber kein Glück. Was mache ich falsch?
Haben Sie ' 'w'' nicht bemerkt, verwendet haben, haben Sie' "w" 'verwendet haben. Mit Arbeitsbeispiel aktualisiert – MadProgrammer