gpt4 book ai didi

java - KeyListener 未到达我的 switch 语句

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:48:43 24 4
gpt4 key购买 nike

我有这个代码:

    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,它在 applet 的顶部添加了一个 JLayeredPane 和内容 Pane (除其他外),这可能意味着该键监听器可能永远无法开始通知事件(因为其他元素正在阻止它)。

相反,使用 Key Bindings

关于java - KeyListener 未到达我的 switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17665897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com