等待多个摇摆工人请考虑以下代码片段:import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;
import java.lang.reflect.InvocationTargetException;import javax.swing.*;public class TestApplet extends JApplet{
@Override
public void init()
{
try
{
SwingUtilities.invokeAndWait(new Runnable()
{
@Override
public void run()
{
createGUI();
}
});
}
catch(InterruptedException | InvocationTargetException ex)
{
}
}
private void createGUI()
{
getContentPane().setLayout(new FlowLayout());
JButton startButton = new JButton("Do work");
startButton.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent ae)
{
JLabel label = new JLabel();
new Worker(label).execute();
}
});
getContentPane().add(startButton);
}
private class Worker extends SwingWorker<Void, Void>
{
JLabel label;
public Worker(JLabel label)
{
this.label = label;
}
@Override
protected Void doInBackground() throws Exception
{
// do work
return null;
}
@Override
protected void done()
{
getContentPane().remove(label);
getContentPane().revalidate();
}
}}下面是向applet添加一个标签,它显示工作线程的一些中间结果(使用发布/处理方法)。最后,标签从applet的窗格中移除。我的问题是,我如何创建多个标签,每个标签都有自己的工作线程,并在它们完成后删除它们?提前谢谢。最新情况:我希望这能澄清我的问题。当所有的工人都完成了他们的任务,而不是在每个工人完成任务之后,我希望所有的标签立即被移除。
2 回答
白衣非少年
TA贡献1155条经验 获得超0个赞
JLabel label = new JLabel(); getContentPane().add(label); getContentPane().validate(); new Worker(label).execute();
JLabel label = new JLabel("Hello...I am here");
for(int i = 0;i < 100; i++){ Thread.sleep(20); label.setText("Counting..." + i); }
添加回答
举报
0/150
提交
取消