Java 如何在执行操作时检查另一个按钮
我有两个按钮,当第一个按钮被点击时,它运行一个无限循环,我希望它在我点击第二个按钮时停止。 既然我对使用java还不熟悉,那么正确的方法是什么呢 我知道这是错的,但我只是想弄清楚我想做什么Java 如何在执行操作时检查另一个按钮,java,Java,我有两个按钮,当第一个按钮被点击时,它运行一个无限循环,我希望它在我点击第二个按钮时停止。 既然我对使用java还不熟悉,那么正确的方法是什么呢 我知道这是错的,但我只是想弄清楚我想做什么 private void button1_buttonActionPerformed(java.awt.event.ActionEvent evt) { while( !button2.isClicked() ) {} } 编辑 这是我试过的 boolean sthap = false; priva
private void button1_buttonActionPerformed(java.awt.event.ActionEvent evt) {
while( !button2.isClicked() ) {} }
编辑
这是我试过的
boolean sthap = false;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
while(!sthap){
System.out.println("run");
}
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
sthap=true;
}
还是。它卡在环上了
编辑2
它仍然卡住了定义一个标志变量,如:
boolean isBUttonClicked = false;
在您的while循环中
使用if语句,如
while(true){
if(isButtonClicked){
isButtonClicked = false;
break;
}else{
//do your job
}
}
在第二个按钮中执行的操作方法
使用isButtonClicked并使其像
isButtonClicked = true;
在按钮方法之外声明一个静态变量,如下所示
boolean flag=false
。
然后在按钮1内
private void button1\u buttonActionPerformed(java.awt.event.ActionEvent evt){
而(!flag){}
还有里面的按钮2
private void button1\u buttonActionPerformed(java.awt.event.ActionEvent evt){
flag=true}
试试这个
boolean sthap = false;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
new Thread(new Runnable() {
@Override
public void run() {
while (!sthap) {
System.out.println("run");
}
}
}).start();
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
sthap = true;
}
使用变量作为标志。我已经考虑过这一点,但在实现“int a=0;”时仍然存在问题private void button1_buttonActionPerformed(java.awt.event.ActionEvent evt){'while(a==0){}''private void button2_buttonActionPerformed(java.awt.event.ActionEvent evt){'a=1;){}如果在事件线程上启动无限循环,您将无法处理第二次按钮按下,因为事件线程正忙。您有什么建议吗?请在另一个线程中执行while循环。在break语句的正上方,将
isButtonClicked
值设置为false
,以便下次单击按钮1时逻辑将运行。@karthikeyanvaithlingam您是对的,我忘了。我正在编辑。谢谢由于“while”循环位于第一个按钮的action void上,因此它对第二个按钮没有任何响应。我试着在第二个按钮上打印一些东西,它没有显示我是否已经单击了第一个按钮。@AniAsyah如果你知道SwingWorkers,我们可以对此做些什么,或者你可以使用Som Bhattacharyya回答。这样做,在单击按钮2后,标志将始终为false
,并再次检查两种方法是否相同。错误显示:“在-source 1.7中不支持lambda表达式(使用-source 8或更高版本来启用lambda表达式),此处不需要lambda表达式。为Thread()构造函数线程找到不合适的构造函数。线程(可运行)不适用(参数不匹配;无法转换为可运行)构造函数线程。线程(字符串)不适用(参数不匹配;无法转换为字符串)----“我改变了对java7的回答。我尝试了一个新的项目,它成功了!谢谢你的帮助^_^/
boolean sthap = false;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
new Thread(new Runnable() {
@Override
public void run() {
while (!sthap) {
System.out.println("run");
}
}
}).start();
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
sthap = true;
}