我刚接触Swing,尝试实现以下功能:
按下一个JButton后,程序开始迭代处理数百个项目,每个项目需要1秒钟的时间进行处理,每当处理完一个项目后,程序应该更新标签以显示已处理的项目数量。
问题在于,在所有项目迭代完成之前,标签的文本不会更新。
我在网上搜索了一下,似乎是因为它运行在同一个线程中,所以我创建了一个新的线程来处理数据并更新要在标签中使用的变量(已处理的文件数)。
但是这没有奏效。然后我甚至又创建了另一个线程,启动在前一个线程之后,用于重绘标签。仍然没有奏效。
代码如下:
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try { SwingUtilities.invokeLater(validateFiles); }
}); }
Runnable validateFiles = new Runnable() {
@Override
public void run() {
while(x_is_not_100) {
processLoadsOfStuff();
label.setText(x); }
}
};
你能帮我解决这个问题吗?