[英]how to change jlabel text/color at runtime in swing aplicaiton
我正在做一个项目,在这个项目上,我要做一个单击按钮的操作,这需要三个步骤。 2-3分钟,我使用以下代码更改jLabel的文本
lblStatus.setText( "Phase1 done successfully !!!, Phase2 started " );
但我只有“所有阶段都成功完成!!!” 完成所有运行后,jLabel中的文本。
如果您在EDT中运行长时间运行的任务,则UI会冻结直到完成任务。 因此,您应该在后台线程中执行长时间运行的任务。 在后台线程中,您可以使用SwingUtilties.invokeLater()
更新UI。 例:
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
lblStatus.setText( "Phase1 done successfully !!!, Phase2 started " );
}});
有关更多信息,请参见SwingUtilities.invokeLater()为什么需要它?
我相信这是因为默认情况下,您的任务将由Event Dispatch Thread
执行,该Event Dispatch Thread
负责管理所有Swing组件,因为它们不是线程安全的。 该线程仅应执行简短的任务,否则您的应用程序将无响应。 您应该将任务转换为SwingWorker
的子类,然后每当任务进度变化时,就可以使用PropertyChangeListener
来修改状态文本。
有关Swing
并发的更多详细信息。
您可以使用以下方法更改颜色:
lblStatus.setForeground(Color.red);
对于更改文本,可以使用setText()
方法,如果使用时遇到问题,请在此处发送所有代码
更改颜色部分文字使用html
lblStatus.setText("<html><b><font color='red'>Phase1 done successfully !!!</font></b>, Phase2 started");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.