java中 按钮触发循环事件后 所有按钮都不响应了
importjava.awt.*;importjava.awt.event.*;publicclassComplexLayoutsextendsMyFrameimplem...
import java.awt.*;
import java.awt.event.*;
public class ComplexLayouts extends MyFrame implements ActionListener
{
private static Button[] bt =new Button[6];
private static Panel p;
public ComplexLayouts(String str)
{
super(str);
}
/**
* @param args
*/
public static void main(String[] args)
{
// TODO 自动生成方法存根
ComplexLayouts cl = new ComplexLayouts("ComplexLayouts!");
p = new Panel();
p.setBackground(Color.lightGray);
p.add(bt[0]);
p.add(bt[1]);
cl.add(p,BorderLayout.NORTH);
cl.add(bt[2],BorderLayout.WEST);
cl.add(bt[3],BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == bt[3])
{
System.exit(0);
}
else
{
int i = 0;
while(true)
{
try
{
Thread.sleep(250);
}
catch(Exception a)
{
}
if(i == 0)
{
bt[3].setBackground(Color.red);
i++;
}
else
{
bt[3].setBackground(Color.yellow);
i--;
}
}
}
}
}
出现个面板 有4个按钮 点击"fire"按钮后 最后一个按钮的背景色红黄交替变化(模仿警报)是循环事件 可是触发该事件后 所有按钮都不能点了
不指导该怎么处理 请高人解答
在线等有没说清楚的告诉我 我再补充
我要问的是解决方法 不说解决方法的一律不采纳
能不能吧具体的代码写上 ?
我就服了! 我知道问题出在哪 我不知道该怎么改 明白吗?
就好像我得病了你告诉我该吃药 我知道得吃药 我要具体的什么药
这个问题我要的是改成的代码 不是要分析的原因 郁闷死了 光说不练 展开
import java.awt.event.*;
public class ComplexLayouts extends MyFrame implements ActionListener
{
private static Button[] bt =new Button[6];
private static Panel p;
public ComplexLayouts(String str)
{
super(str);
}
/**
* @param args
*/
public static void main(String[] args)
{
// TODO 自动生成方法存根
ComplexLayouts cl = new ComplexLayouts("ComplexLayouts!");
p = new Panel();
p.setBackground(Color.lightGray);
p.add(bt[0]);
p.add(bt[1]);
cl.add(p,BorderLayout.NORTH);
cl.add(bt[2],BorderLayout.WEST);
cl.add(bt[3],BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == bt[3])
{
System.exit(0);
}
else
{
int i = 0;
while(true)
{
try
{
Thread.sleep(250);
}
catch(Exception a)
{
}
if(i == 0)
{
bt[3].setBackground(Color.red);
i++;
}
else
{
bt[3].setBackground(Color.yellow);
i--;
}
}
}
}
}
出现个面板 有4个按钮 点击"fire"按钮后 最后一个按钮的背景色红黄交替变化(模仿警报)是循环事件 可是触发该事件后 所有按钮都不能点了
不指导该怎么处理 请高人解答
在线等有没说清楚的告诉我 我再补充
我要问的是解决方法 不说解决方法的一律不采纳
能不能吧具体的代码写上 ?
我就服了! 我知道问题出在哪 我不知道该怎么改 明白吗?
就好像我得病了你告诉我该吃药 我知道得吃药 我要具体的什么药
这个问题我要的是改成的代码 不是要分析的原因 郁闷死了 光说不练 展开
展开全部
上面两位分析的是对的,看你代码中的这一行:
Thread.sleep(250);
你是采用单线程设计的程序,当执行这一句之后,程序当sleep,如果此时你点击按钮,它当然没有响应了,而且,这种sleep还得无限死循环的执行下去。
需要将这一部分第250毫秒就改变一次颜色的代码放到一个新的线程中执行。
Thread.sleep(250);
你是采用单线程设计的程序,当执行这一句之后,程序当sleep,如果此时你点击按钮,它当然没有响应了,而且,这种sleep还得无限死循环的执行下去。
需要将这一部分第250毫秒就改变一次颜色的代码放到一个新的线程中执行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
大量计算的需单独线程,才可以不影响界面。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把需要大量计算的逻辑放到一个单独的线程里面去
点击按钮让线程start()就成
点击按钮让线程start()就成
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询