[英]KeyListener not reaching my switch statement
我有這個代碼:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JApplet;
public class applet extends JApplet implements KeyListener, MouseListener{
int a = 0;
int b = 0;
public void init(){
setSize(500,500);
addKeyListener( this );
addMouseListener( this );
}
public void paint(Graphics g){
g.setColor(Color.BLUE);
g.fillRect(a, b, 400, 400);
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println("Hello!")
switch(e.getKeyCode()){
case KeyEvent.VK_DOWN: a -= 5;
break;
case KeyEvent.VK_UP: a += 5;
break;
case KeyEvent.VK_RIGHT: b += 5;
break;
case KeyEvent.VK_LEFT: b -= 5;
break;
}
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}
它甚至沒有到達 switch 語句,從我的調試 println 代碼可以看出。 為什么會發生這種情況,我該怎么做才能解決這個問題? 如果這太寬泛,請不要討厭,因為我是這個主題的完全菜鳥
KeyListener
只會在它注冊的組件是可聚焦的並且具有焦點時觸發事件。
JApplet
有一個JRootPane
,它在小程序的JRootPane
添加了JLayeredPane
和內容窗格(以及其他內容),這可能意味着關鍵偵聽器可能永遠無法開始通知事件(因為其他元素正在阻止它)。
相反,使用鍵綁定
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.