Próbuję utworzyć powiązania klawiszy w Javie na JPanel. Chcę wykonać określoną akcję po naciśnięciu przycisku "w". Postępuję zgodnie z samouczkiem Java dotyczącym tworzenia powiązań, ale metoda actionPerformed nie jest wykonywana (tzn. Tekst nie jest drukowany). Poniżej znajduje się całość kodu dla mojego testu GUI, z odpowiedniej części podkreślił:Wiązania kluczy Java nie działa
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();
}
}
tekst „test” nigdy nie zostanie wydrukowany. Próbowałem wiele razy z wieloma różnymi wariantami, różnymi kluczami i upewniłem się, że panel jest ostry, ale bez powodzenia. Co ja robię źle?
Nie zauważyłem uzywasz ' 'w'' pomyślał uzywasz' "w" '. Zaktualizowany na przykładzie roboczym – MadProgrammer