返回信息流小弟菜鸟一个。。。。最近做一个飞镖的小游戏。。。由于用到了ActionListener,同时监听鼠标的移动事件与点击事件(当鼠标移动时调用robot类实现随机移动干扰,当鼠标点击左键发射飞镖),但是遇到问题一个,有些时候这俩事件可能冲突,点了鼠标左键没响应。。。求解。。。
部分代码如下。。
private void jLabel1MouseMoved(java.awt.event.MouseEvent evt) {
int x = evt.getXOnScreen();
int y = evt.getYOnScreen();
jLabel2.setText("x: "+x+"; y: "+y);
try{
int a = x+(int)(-17+34*Math.random());
int b = y+(int)(-17+34*Math.random());
r = new Robot();
r.mouseMove(a, b);
r.delay(280);
r.waitForIdle();
}
catch(Exception e){}
}
private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {
System.out.print("shoot\n");
}
这是一条镜像帖。来源:北邮人论坛 / java / #13702同步于 2010/3/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
求助关于java多事件响应
bupt8830
2010/3/26镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
事件处理不能有阻塞,因为如果某事件执行时间太长,同组件的其他事件会随机性的丢失。
r.delay(280);
将导致某些事件丢失。
解决方法是将Robot做成独立的线程。
求教怎么实现robot单独线程。。。俺对多线程了解极其少。。。
【 在 greedisgood 的大作中提到: 】
: 事件处理不能有阻塞,因为如果某事件执行时间太长,同组件的其他事件会随机性的丢失。
: r.delay(280);
: 将导致某些事件丢失。
: ...................
【 在 bupt8830 的大作中提到: 】
: 求教怎么实现robot单独线程。。。俺对多线程了解极其少。。。
单线程是不能处理并发的,还是好好看看基础吧