java中怎样让主线程暂时停止运行,直到鼠标点击按钮以后再继续运行

设置死循环当点按钮时使循环条件为假的方式试过,程序会卡死。使用wait()则会抛出异常。
void runevent1() {System.out.println("run1");
ArrayList<String> words=new ArrayList<String>();
words=reader.readEvent("event.txt", event1);
for(String line:words){
System.out.println(line);
/*while(event1stop){
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
event1stop=true;*/
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

第1个回答  2012-03-31
请你说明一下这个runevent1过程是哪个线程上运行的。如果这个线程是Swing GUI线程则无法实现(因为按钮运行在Swing GUI线程)。如果是其他线程,那么声明一个共用变量,比如叫lock,则在主线程:
synchronized(lock) {
lock.wait();
}
(每次wait()都要synchronized,这是Java的一个准则)
然后再按钮点击的事件里:
synchronized(lock) {
lock.notify();
}

对了,不要直接调用wait(),因为那样等于调用this.wait(), 结果不堪设想。你要用一个其他的Object, 比如一个class里面的一个static变量:
public static final Object lock = new Object();追问

runevent1在主线程上,什么叫共用变量?

追答

共用变量就是两个线程都能访问的变量。这个放在哪取决于具体情况。比如:
class Utils {
public static final Object myLock = new Object();
}

那这个myLock就可以作为共用变量。两个线程都可以用Utils.myLock来访问这个变量。

追问

那个runtime1好像是在GUI的线程上,因为是另一个按钮调用了一个方法,然后那个方法调用了runtime1,。这种情况下应该怎么办呢?

第2个回答  2012-04-15
主线程停不了吧!
第3个回答  2012-04-09
主线程都让你停下来了,你如何能够点击按钮。
第4个回答  2012-03-31
主线程?
不是子线程?
第5个回答  2012-03-31
鼠标点击暂停 在点击继续吗

cmd运行java jar包 运行一段时间后 服务会卡住 按一下键盘又可以继续执...
这个操作可以将如下代码做个.bat脚本,将DOS窗口默认模式设置为【取消快速编辑模式】这样就可以防止手误影响进程运行了。echo offreg add HKEY_CURRENT_USER\\Console \/v QuickEdit \/t REG_DWORD \/d 00000000 \/f

java中如何实现:主线程等待UI输入,然后继续运行?
System.out.println("1");\/\/ 这里时要求的代码,要求主线程在这里悬停,直到我按下“主线程继续”按钮,然后才输出“2”synchronized (continueThread) { \/\/如果继续线程为false,则执行循环 while (continueThread == false) { } } System.out.println("2");} } ...

java怎么设置我鼠标点一个按钮不放的时候它会一直System out 消息...
你去实现MouseMotionListener这个监听,监听里面就有按住鼠标不松和松开的方法,只要在里面添加相应的代码就可以了。

java中如何让鼠标进入JButton后锁定啊?
说了这么多,Robot对实现你的想法,是非常easy的了。只要用Button或者Frame等等监听鼠标的位置,当它移出Button时,重新设置鼠标的位置即可。吹了这么多,下面,让你看看Robot的一个简单的程序。*\/ import java.awt.*;public class Robot05\/\/ extends Frame { public static void main(String[] args) ...

JAVA如何用鼠标左键点击改变按钮的名字 下面是代码
把你的这两个代码 a.setName("暂停");a.setName("开始");换成 a.setText("暂停");a.setText("开始");除此之外还有一个问题,就是你要在短时间内不停的点开始按键才可以转换。如果中间隔了一点时间,你的 e.getClickCount()会重置为0,这就是为什么有时候你间隔的点了几次,怎么也不能...

java中控制鼠标点击的方法
\/\/程序流程:模拟鼠标左键点击 开始-->运行-->CMD-->DIR-->CLS-->EXIT \/\/模拟右键点击 移动到右下角-->右键点击-->调整日期和时间-->退出 import java.awt.*;import java.awt.event.*;import javax.swing.JOptionPane;\/\/Test.java public class Test { public static void main(String[] ...

java中,鼠标移动到按钮处的时候怎么让指针变成小手
button.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));这行就可以设置JButton的指针变小手了

JAVA中,要想点击一个按钮,然后运行一个指定的程序(桌面那些程序),怎么...
看看这个类,它可以调用本地记事本程序,你将其中的实现方法写到按钮的监听实现方法中即可 import java.io.IOException;public class NotepadTest { public void useExe() throws IOException, InterruptedException { Process p = Runtime.getRuntime().exec("notepad");\/\/ 调用本地记事本程序 p.waitFor...

java如何实现在点一个按钮后弹出的对话框中显示内容,求具体代码。
(1)手动修改注册表法:开始菜单->运行->regedit->确定,打开注册表编辑工具,第一,按如下顺序依次打开:HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Internet Explorer\\Search分支,找到“SearchAssistant”键值名,在右面窗口点击“修改”,即可对其键值进行输入为: \/srchasst\/srchasst.htm ,然后再找到“CustomizeSearch”键值名,将...

用JAVA语言,怎样在鼠标点击按钮后在文本框里显示次数?
定义全局变量统计点击次数。文本框对象设置为 final 按钮添加点击时间监听 按钮点击,次数加1,监听方法里面设置文本框的内容为次数当前值。

相似回答