Java:同时运行多个while循环
我正在尝试使用此闪烁方法同时使多个Java:同时运行多个while循环,java,multithreading,swing,while-loop,thread-sleep,Java,Multithreading,Swing,While Loop,Thread Sleep,我正在尝试使用此闪烁方法同时使多个JRadioButtons闪烁: private void blink(JRadioButton button, boolean blinking) { if(blinking) { while(true) { try { button.setSelected(true); Thread.slee
JRadioButtons
闪烁:
private void blink(JRadioButton button, boolean blinking)
{
if(blinking)
{
while(true)
{
try
{
button.setSelected(true);
Thread.sleep(500);
button.setSelected(false);
Thread.sleep(500);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
else
{
button.setSelected(false);
}
}
我知道这与线程有关,但我对它们不太熟悉
我正在尝试使用这个闪烁方法使几个jradiobutton同时闪烁
我想你不需要多个while循环
只需将所有要闪烁的按钮添加到ArrayList
,然后在相同的while
循环中,循环该列表并闪烁按钮。因此,与其
button.setSelected(true);
Thread.sleep(500);
button.setSelected(false);
Thread.sleep(500);
你可以用
for(int i=0; i<yourList.size(); i++) {
yourList.get(i).setSelected(true);
}
Thread.sleep(500);
for(int i=0; i<yourList.size(); i++) {
yourList.get(i).setSelected(false);
}
Thread.sleep(500);
我正在尝试使用这个闪烁方法使几个jradiobutton同时闪烁
我想你不需要多个while循环
只需将所有要闪烁的按钮添加到ArrayList
,然后在相同的while
循环中,循环该列表并闪烁按钮。因此,与其
button.setSelected(true);
Thread.sleep(500);
button.setSelected(false);
Thread.sleep(500);
你可以用
for(int i=0; i<yourList.size(); i++) {
yourList.get(i).setSelected(true);
}
Thread.sleep(500);
for(int i=0; i<yourList.size(); i++) {
yourList.get(i).setSelected(false);
}
Thread.sleep(500);
您不能使用
Thread.sleep
为GUI设置动画。事实上,您决不能在事件调度线程上调用Thread.sleep
,因为正是该线程负责重新绘制GUI,这显然是它在睡眠时无法做到的
您必须使用的是Swing Timer类,并计划它以所需的间隔重复。您不能使用
线程.sleep来设置GUI的动画。事实上,您决不能在事件调度线程上调用Thread.sleep
,因为正是该线程负责重新绘制GUI,这显然是它在睡眠时无法做到的
您必须使用的是Swing Timer类,并计划它以所需的间隔重复。发布的代码可能在不同的线程(而不是EDT)上运行。但这当然仍然是错误的,因为您不能从另一个线程调用Swing方法。如果要使用调用器来更正代码,那么代码就会变得一团糟,使用额外的线程也没有什么用处。可能发布的代码运行在不同的线程(而不是EDT)上。但这当然仍然是错误的,因为您不能从另一个线程调用Swing方法。如果使用invokeLater
来更正代码,那么它将变成一团乱麻,使用额外的线程也没有什么用处。