Java 如何在执行操作时检查另一个按钮

Java 如何在执行操作时检查另一个按钮,java,Java,我有两个按钮,当第一个按钮被点击时,它运行一个无限循环,我希望它在我点击第二个按钮时停止。 既然我对使用java还不熟悉,那么正确的方法是什么呢 我知道这是错的,但我只是想弄清楚我想做什么 private void button1_buttonActionPerformed(java.awt.event.ActionEvent evt) { while( !button2.isClicked() ) {} } 编辑 这是我试过的 boolean sthap = false; priva

我有两个按钮,当第一个按钮被点击时,它运行一个无限循环,我希望它在我点击第二个按钮时停止。 既然我对使用java还不熟悉,那么正确的方法是什么呢

我知道这是错的,但我只是想弄清楚我想做什么

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;
}