blu*_*lue 1 java swing keylistener
单击MenuItem NewGame时.它可以工作,但按F2不会
mntmNewGame.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
int n = JOptionPane.showConfirmDialog(contentPane,"Do you want to play new game ?", "Message!", JOptionPane.OK_CANCEL_OPTION);
}
});
mntmNewGame.addKeyListener(new KeyAdapter() {
public void keyListener(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_F2)
{
int n = JOptionPane.showConfirmDialog(contentPane,"Do you want to play new game ?", "Message!", JOptionPane.OK_CANCEL_OPTION);
}
}
});
Run Code Online (Sandbox Code Playgroud)
这就是为什么你应该总是@Override在重写方法时使用... KeyAdapter没有keyListener方法 - 它有keyPressed,keyReleased和keyTyped.例如,您可能需要:
mntmNewGame.addKeyListener(new KeyAdapter() {
@Override public void keyTyped(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_F2) {
int n = JOptionPane.showConfirmDialog(
contentPane,
"Do you want to play new game ?",
"Message!",
JOptionPane.OK_CANCEL_OPTION);
// Use n, presumably...
}
}
});
Run Code Online (Sandbox Code Playgroud)
使用@Override注释,如果你输错,编译器会发现你试图覆盖某些东西,但实际上并没有这样做 - 所以你得到一个编译时错误,而不仅仅是一个永远不会被调用的方法.