我正在練習事件,並希望設置它,所以我有一個類既響應按鈕和按鍵,它編譯好,但關鍵事件不調用方法/工作在所有。關鍵事件不起作用
這是類:
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);
他們試圖調用存在和工作按預期的方式,我確信這樣通過美其名曰詢問前的按鈕。
爲什麼它不工作/我錯過了什麼? &有更有效的形式嗎?
你可以發佈完整的實例+註冊碼嗎?看起來問題出在這個小片段之外...... –