Stopwatch Java秒表不工作

Stopwatch Java秒表不工作,stopwatch,Stopwatch,我正在制作一个魔方计时器应用程序,我有一个秒表功能,对我来说似乎很好,但只是停止gui正常工作。它不允许窗口关闭,也不允许停止按钮工作。当我将while循环的条件更改为:while seconds

我正在制作一个魔方计时器应用程序,我有一个秒表功能,对我来说似乎很好,但只是停止gui正常工作。它不允许窗口关闭,也不允许停止按钮工作。当我将while循环的条件更改为:while seconds<10时,我的程序在显示时间并允许我循环之前等待10秒。我的猜测是,我正在创建一个无限循环,因为动作侦听器在循环期间无法工作。以下是我的代码部分:

public class MyStartListener implements ActionListener {
        public void actionPerformed(ActionEvent a) {
            startClock(true);
        }
    }

    public class MyStopListener implements ActionListener {
        public void actionPerformed(ActionEvent a) {
            startClock(false);
        }
    }

    public void startClock(boolean t) {
        boolean play = t;
        int minutes=0;
        int seconds=0;
        long milliSeconds=0;
        while (play==true) {
            try {
                Thread.sleep(1);
            } catch(Exception ex) {
                ex.printStackTrace();
            }

            milliSeconds+=1;
            if (milliSeconds==1000) {
                seconds+=1;
                milliSeconds=0;
            }
            if (seconds==60) {
                minutes+=1;
                seconds=0;
            }
            String counting =minutes+":"+seconds+":"+milliSeconds+"";
            text.setText(counting);
        }
    }
}

您正在GUI线程上完成所有工作,因此没有任何其他内容需要运行更改。在JavaEDT事件调度线程上做一些谷歌搜索,等等。谢谢,所以如果我在另一个线程上做的话,gui不会停止,仍然会检查操作?我是java.Yep的新手-如果您在后台线程上工作,GUI将继续处理事件。如果有两个线程试图更改相同的变量,则需要小心。谢谢,我需要仔细阅读线程。当点击停止按钮并通过秒表传递false时,它会停止吗?我读了很多线程,但我仍然不知道如何做。当GUI继续处理事件时,如何使秒表在不同的线程上运行?