代码:
public void actionPerformed(ActionEvent evt)
{
.......
while(true)
{
if (source==button1)
{
//button1 code
}
if(source==button2)
{
// button2 code
}
} //while true
.....
//some other code that I don't want it to execute until while breaks
}//action performed
所以问题是,当执行上述代码时,GUI被卡住了,无法按下任何按钮。如果我删除了无限循环,剩下的代码将被执行并停止我的算法。这个问题有什么解决办法吗?
谢谢!
您正在阻塞GUI线程。试试看教程,它解释了如何在后台线程中运行用户操作。
http://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html
while循环是一个严重的编程错误。当程序在事件调度线程中执行循环时,它将无法调度任何其他事件(按下其他按钮)。
你必须消除循环。这样一来,actionPerformed方法将在每次点击按钮时运行(假设按钮有actionListener…)。