Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
另一个按钮函数(Java)中循环函数的中断(停止)按钮_Java_Loops_Jbutton_Break - Fatal编程技术网

另一个按钮函数(Java)中循环函数的中断(停止)按钮

另一个按钮函数(Java)中循环函数的中断(停止)按钮,java,loops,jbutton,break,Java,Loops,Jbutton,Break,我一直在努力使按钮B(停止)能够在循环函数内部打破循环。我只需要停止循环或被按钮B(停止)按钮打断。谢谢。:)[我已经试过寻找,但没有找到任何对我有帮助的结果。] /* * */ package stopwatch; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.logging.Level; import java.util.logging.Logger

我一直在努力使按钮B(停止)能够在循环函数内部打破循环。我只需要停止循环或被按钮B(停止)按钮打断。谢谢。:)[我已经试过寻找,但没有找到任何对我有帮助的结果。]

/*
 * 
 */

package stopwatch;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

/**
 *
 * @author C
 */

public class Stopwatch {

    /**
     * @param args the command line arguments
     */

    private static int abc = 0;

    private static void print (int x, String b) {

        if ( x == 69 ) {

            System.out.println(b);

        }

        if ( b == null ) {

            System.out.println(x);

        }

    }

    private static void  changea(int val) {

        abc = val;

    }

    public static void main(String[] args) {


        JFrame aeeb = new JFrame("Stopwatch : Start");
        aeeb.setVisible(true);
        aeeb.setSize(50, 150);

        JButton button = new JButton("Start");
        button.setVisible(true);
        aeeb.add(button);

        JFrame aeec = new JFrame("Stopwatch : Stop");
        aeec.setVisible(true);
        aeec.setSize(50, 150);

        final JButton buttonb = new JButton("Stop");
        buttonb.setVisible(true);
        aeec.add(buttonb);

        button.addActionListener(new ActionListener() {

            int x = 1;
            int msec = 0;
            int sec = 0;
            int min = 0;
            int hour = 0;

            public void actionPerformed(ActionEvent e)

            {

                if ( x == 1 ) {

                    print(69, "Stopwatch is running!");
                    x = 0;

                    int xd = 10;

                        while( xd < 20 ) {

                            if ( msec == 1000 ) {

                                sec = sec + 1;
                                msec = 0;

                            }

                            if ( sec == 60 ) {

                                min = min + 1;
                                sec = 0;

                            }

                            if ( min == 60 ) {

                                hour = hour + 1;
                                min = 0;

                            }

                            msec++;

                            if ( msec == 1000 ) {

                                sec = sec + 1;
                                msec = 0;

                            }

                            if ( sec == 60 ) {

                                min = min + 1;
                                sec = 0;

                            }

                            if ( min == 60 ) {

                                hour = hour + 1;
                                min = 0;

                            }

                        try {
                            Thread.sleep(1);

                        }     catch (InterruptedException ex) {
                            Logger.getLogger(Stopwatch.class.getName()).log(Level.SEVERE, null, ex);
                        }

                        }

                }

                if ( x == 0 ) {

                    print(69, "Stopwatch is running already!");

                }

            }

        });

    }
}
/*
* 
*/
包装秒表;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.util.logging.Level;
导入java.util.logging.Logger;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JTextField;
/**
*
*@C作者
*/
公共类秒表{
/**
*@param指定命令行参数
*/
私有静态int abc=0;
私有静态无效打印(整数x,字符串b){
如果(x==69){
系统输出打印ln(b);
}
如果(b==null){
系统输出println(x);
}
}
专用静态无效更改a(int val){
abc=val;
}
公共静态void main(字符串[]args){
JFrame aeeb=新JFrame(“秒表:启动”);
aeeb.setVisible(真);
aeeb.setSize(50,150);
JButton按钮=新JButton(“开始”);
按钮。设置可见(真);
aeeb.add(按钮);
JFrame aeec=新JFrame(“秒表:停止”);
aeec.setVisible(真);
aeec.setSize(50,150);
最终按钮B=新按钮(“停止”);
按钮b.setVisible(true);
aeec.添加(按钮b);
addActionListener(新建ActionListener()){
int x=1;
整数毫秒=0;
整数秒=0;
int min=0;
整小时=0;
已执行的公共无效操作(操作事件e)
{
如果(x==1){
打印(69,“秒表正在运行!”);
x=0;
int xd=10;
而(xd<20){
如果(毫秒==1000){
秒=秒+1;
msec=0;
}
如果(秒=60){
min=min+1;
秒=0;
}
如果(最小==60){
小时=小时+1;
最小值=0;
}
毫秒++;
如果(毫秒==1000){
秒=秒+1;
msec=0;
}
如果(秒=60){
min=min+1;
秒=0;
}
如果(最小==60){
小时=小时+1;
最小值=0;
}
试一试{
睡眠(1);
}捕获(中断异常例外){
Logger.getLogger(Stopwatch.class.getName()).log(Level.SEVERE,null,ex);
}
}
}
如果(x==0){
打印(69,“秒表已在运行!”);
}
}
});
}
}

按下停止按钮时,使用标志并将其设置为false

public class Stopwatch {
...
private boolean isRunning = false;
...
开始按钮动作中的循环:

  ...
  isRunning = true;
  ...
  while(isRunning) {
  ...
停止按钮:

   final JButton buttonb = new JButton("Stop");
   buttonb.setVisible(true);
   aeec.add(buttonb);
   aeec.addActionListener(new ActionListener(){
        isRunning = false;
   });

也许可以这样做:

public class stopwatch{
    public boolean isOn = true;

    // stuff
    // loop:
    if(!something.isOn){
        break;
    }
    // rest of loop
}
按下按钮时:

Stopwatch.isOn = false;
事件处理程序中不应该有长操作。您正在挂起事件调度线程。此外,您的循环是一个无止境的循环,因为
xd
永远不会改变。您应该使用事件处理程序设计秒表,并且始终仅对短操作(如在变量中设置值)使用事件处理程序。