我正在制作一个游戏,当我在导入一个用户输入时,我遇到了这个问题。我向JPanel添加了一个KeyListener,但它根本不起作用。该程序由JFrame(WindowManager)中的JPanel(GameWindow)组成。游戏在GameLoop对象中启动,该对象可以运行。级别包含地图外观的所有信息。我读到KeyListener工作,如果组件是可聚焦的,所以我检查面板是否是可聚焦的,程序返回true。也许这是一个线程问题,但我不知道为什么。
public class GameWindow extends JPanel {
private Level level;
private GameLoop gameLoop;
private LevelLoader levelLoader = new LevelLoader();
private WindowManager windowParent; // A JFrame
public GameWindow(WindowManager windowParent){
super();
this.windowParent = windowParent;
setBackground(Color.BLACK);
gameLoop = new GameLoop(this);
level = levelLoader.loadLevel(1);
setFocusable(true);
requestFocusInWindow();
addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
System.out.println("typed");
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println("pressed");
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println("released");
}
});
start();
}
private void start(){
Thread thread = new Thread(gameLoop);
thread.start();
}
@Override
public Dimension getPreferredSize() {
return new Dimension(600, 600);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D graphics2D = (Graphics2D) g;
graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
level.paintLevel(g,getSize());
}
}
问题解决了,我需要在JPanel添加到JFrame并变得可见后请求焦点。
问题内容: 我有一个使用从扩展的类的子类 我将一个对象添加到框架-中。现在,当我按下任意键盘键时,不会调用任何方法,并且似乎没有窗口焦点。我也尝试过调用,但仍然没有响应。 如何使它响应按键? 问题答案: 您是否为面板设置了面板本身?另外,您可能需要将面板设置为可聚焦。我通过此代码对其进行了测试,它似乎可以正常工作
有人能告诉我为什么这也不管用吗?(我的第二个动作监听器是我的游戏所需的其他东西)
问题内容: 我正在做一个涉及JPanel中的鼠标和键监听器的小项目。不幸的是,当我使用鼠标/键盘时,没有一个方法被调用。我之前曾使用过JPanels / JFrame / JApplet和JComponents。代码片段如下所示: 偏离主题:我不断收到错误消息您的帖子似乎包含格式错误的代码。请使用代码工具栏按钮或CTRL + K键盘快捷键将所有代码缩进4个空格。要获得更多编辑帮助,请单击[?]工具
我的问题是,我需要制作一个不断更新的GUI,因为我得到的值可以从数据库中更改,并且我在图形区域中遇到了一些问题。 我使用Graphics2D中的Drawline和Drawstring打印数据库中的值,这些字符串和线条移动并更改值,所以我需要调用repaint();使用计时器使它们出现在jpanel中,问题是repaint();不是在绘制之前移除背景中的旧绘画,而是当我完全调整所有更新的大小时。 我
额外信息:我是用BlueJ来从中,用4个类在basic程序中回答我的问题。我意识到很多人在互联网上说要使用键绑定而不是KeyListener,但我现在不明白键绑定... ---遵循装满鳗鱼的气垫船的建议,我将尝试使用键绑定。--- 所以Keybindings有两个“命令”来工作:输入和操作。