我的Netbeans GUI表单上有两个按钮。一个按钮是启动按钮,另一个是停止按钮。当我按下开始按钮时,我的代码运行良好,但是当我尝试停止时,停止按钮似乎被禁用。我无法按下停止按钮。
我的代码从GUI开始,其中这是我的启动按钮
的代码private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {
live p=new live(); //this calls the method of my application
p.livecapture();
}
停止按钮的代码
private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
mm=2;
}
我的livecapture()
方法
while(NewJFrame.mm!=2) {
}
答案 0 :(得分:4)
建议:
如需更多帮助,请告诉我们更多关于您的现场课程,它的作用,以及“捕捉”时的作用。
答案 1 :(得分:4)
我不确定你的情况,但听起来你正在从事件调度线程(EDT)执行你的代码。这是程序中负责监听GUI生成的事件(以及其他内容)的线程。如果您的EDT正在忙于处理侦听器中用于启动按钮的代码,那么对于发生的任何其他按钮,它将是盲目的。
为了防止这种情况,您应该使程序成为多线程的。这是任何编程语言中的一个重要主题,但这里有一个简单的例子,说明了使用Swing Worker在Java中完成的许多方法之一:
class MyWorker extends SwingWorker<Void, Void> {
public Void doInBackground() {
// The code you want to run
return Void;
}
}
MyWorker thread = new MyWorker();
startButton.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e ) {
thread.execute();
}
} );
endButton.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e ) {
thread.cancel();
}
} );