我正在练习事件,并希望设置它,所以我有一个类既响应按钮和按键,它编译好,但关键事件不调用方法/工作在所有。关键事件不起作用
这是类:
class CircleListener extends KeyAdapter implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == nlrg_button) canvas.enlarge();
else if (e.getSource() == shrink_button) canvas.shrink();
else if (e.getSource() == superenlarger_button) canvas.enlargeAlot();
else if (e.getSource() == supershrinker_button) canvas.shrinkAlot();
repaint();
}
@Override
public void keyPressed(KeyEvent e) {
switch(e.getKeyCode()){
case KeyEvent.VK_DOWN: canvas.circleDown(); break;
case KeyEvent.VK_UP: canvas.circleUp(); break;
case KeyEvent.VK_LEFT: canvas.circleLeft(); break;
case KeyEvent.VK_RIGHT: canvas.circleRight(); break;
}
repaint();
}
}
这是实例+注册:
CircleListener listener = new CircleListener();
// Bind buttons with respective eventlistener class
nlrg_button.addActionListener(listener);
shrink_button.addActionListener(listener);
superenlarger_button.addActionListener(listener);
supershrinker_button.addActionListener(listener);
// Bind canvas to keylistener class
canvas.addKeyListener(listener);
他们试图调用存在和工作按预期的方式,我确信这样通过美其名曰询问前的按钮。
为什么它不工作/我错过了什么? &有更有效的形式吗?
你可以发布完整的实例+注册码吗?看起来问题出在这个小片段之外...... –