[英]Change a JLabel Text while an JButton listener is working
我有一个JButton,让我们称之为“按钮”,并向其中添加了一个ActionListener:
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
call();
}
});
它已正确添加到我的框架等中。在该JFrame中,我也有一个JLabel,并且我想在JButton方法运行时更改其文本(因为大约需要30秒才能完成)。 我怎么做? 我是否必须使用一些多线程工具? 这是基本原理(JLabel称为输出):
public void call(){
output.setText("test1");
try { Thread.sleep(1000);
} catch (InterruptedException e) {}
output.setText("test2");
}
一秒钟后,这将导致“输出”标签更改为“ test2”。 如何使其立即显示“ test1”?
不要使用Thread.sleep()。 这将防止GUI重新绘制自身。
我是否必须使用一些多线程工具?
是。
对于长期运行的任务,您需要启动一个单独的Thread
,以便GUI可以保持响应状态。
在这种情况下,您可以使用SwingWorker
。
阅读Swing 并发教程中的这一节,以获取更多信息和使用SwingWorker
的示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.