繁体   English   中英

在JButton侦听器工作时更改JLabel文本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM