【发布时间】:2016-07-18 22:46:16
【问题描述】:
我正在尝试制作一个简单的游戏,其中同时使用鼠标和按键来控制角色。我遇到的问题是,只要按住任何键,我就无法移动鼠标。即使我松开按键,在我能够再次移动鼠标之前也会有一点延迟。我认为这可能是由于我使用了键/鼠标侦听器,但是我制作了显示此错误的最简单的工作程序:
package listenerproblem;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ListenerProblem extends JFrame{
public ListenerProblem(){
super("Problems");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(100, 200);
JPanel jPanel = new JPanel();
jPanel.setSize(100,200);
jPanel.setBackground(Color.WHITE);
jPanel.setFocusable(true);
add(jPanel);
setVisible(true);
}
public static void main(String[] args) {
ListenerProblem listenerProblem = new ListenerProblem();
}
}
我想知道是什么导致了这个错误,以及 Swing 中是否有任何解决方法,以便可以同时使用鼠标和键。
如果我在 Windows 8.1 上使用东芝 C50-A-1E2 以任何方式很重要 该程序是在 NetBeans 中制作和运行的。非常感谢您的帮助。
【问题讨论】:
-
您是否在 Event Dispatch Thread 中运行与 UI 相关的代码?
-
我相信是的。我会为 Key/Mouse Listener 创建一个类,然后执行 jPanel.addKeyListener(new myKeyListener());。然而,在没有任何类型的监听器的情况下,这个简单的程序仍然会出现鼠标卡住的问题。如果你运行这个,你有鼠标冻结吗?
-
不,我在粘贴和运行代码时不会冻结。您使用哪个 JDK 构建以及使用哪个 JRE 运行?
-
产品版本:NetBeans IDE 8.1(内部版本 201510222201)Java:1.8.0_91; Java HotSpot(TM) 64 位服务器 VM 25.91-b14 运行时:Java(TM) SE 运行时环境 1.8.0_91-b14。知道为什么会发生这种情况吗?
-
嗨@Kon,我刚刚发现了我的问题并发布了解决方案。老实说,我希望您能够复制我的问题,并且我的代码存在问题。由于您无法做到,我意识到我的系统和触摸板肯定存在问题,确实存在。如果没有你告诉我你不能让鼠标冻结,我会继续认为我的 Java 代码有问题。非常感谢您花时间帮助我并解决问题;非常感谢。
标签: java swing keylistener mouselistener