如何解决按下GUI按钮后线程未停止
我有一个程序,该程序应该具有GUI,您可以在其中在文本框中输入值,并且它可以作为计时器递减计数。线程会处理倒数,而停止按钮应停止倒数。我有一个布尔值,它设置循环是否运行。问题是,按钮更改值所做的任何努力都将被忽略。当按下按钮时,布尔值设置为true,但是如果之后再进行检查,则返回false。我不知道这种情况如何发生或为什么发生。
这是倒计时方法。
class countClockDown implements Runnable
{
int hour,min,sec,mili;
volatile boolean stop = false;
countClockDown()
{
}
void setCountClockDown(int a,int b,int c)
{
hour = a;
min = b;
sec = c;
}
void setCountClockDown(int a,int c,int d)
{
hour = a;
min = b;
sec = c;
mili = d;
}
void stopRunning()
{
stop = true;
}
public void run()
{
while(!stop && (hour != 0 | min != 0 | sec > 0 | mili > 0))
{
Thread.yield();
if (mili < 0)
{
mili = 999;
sec--;
}
if (sec < 0)
{
sec = 59;
min--;
}
if (min < 0)
{
min = 59;
hour--;
}
mili--;
countHRIn.setText(String.valueOf(hour));
countMINIn.setText(String.valueOf(min));
countSECIn.setText(String.valueOf(sec));
try
{
Thread.sleep(1);
}
catch (InterruptedException e)
{
}
}
}
}
这是按钮。
public void actionPerformed(ActionEvent ae)
{
int hour,mil;
Object source = ae.getSource();
countClockDown cd = new countClockDown();
countClockUp cu = new countClockUp();
Thread t = new Thread(cd);
if (source == countStart)
{
hour = Integer.parseInt(countHRIn.getText());
min = Integer.parseInt(countMINIn.getText());
sec = Integer.parseInt(countSECIn.getText());
cd.setCountClockDown(hour,sec);
t.start();
}
if (source == countStop)
{
cd.stop = true;
t.interrupt();
System.out.print(cd.stop);
}
感谢您的帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。