如何在WindowClosing事件期间更新JFrame对象?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在WindowClosing事件期间更新JFrame对象?相关的知识,希望对你有一定的参考价值。
我有几个关闭步骤需要在处理之前在WindowClosing事件期间执行。一切都正常执行,但我想添加在关闭的JFrame中的现有JLabel中提供关闭状态消息的功能。是否可以在WindowClosing事件期间更新JLabel文本?
答案
当然。只需确保在开始与组件交互之前不处理组件。
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// update label here
}
});
另一答案
但我想添加在结束JFrame中的现有JLabel中提供关闭状态消息的功能
label.setText(....);
label.paintImmediately(label.getBounds());
侦听器中的代码在Event Dispatch Thread上执行,因此GUI在执行所有侦听器代码之前无法重新绘制,并且此时GUI将被关闭。
paintImmediately(...)
将允许组件绕过RepaintManager并立即绘制自己。
另一答案
我使用以下代码在后台执行关机步骤,然后关闭JFrame。
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() {
@Override
public Void doInBackground() {
// shutdown steps go here and can update the JLabel text
frame.dispose();
return null;
}
};
worker.execute();
}
});
以上是关于如何在WindowClosing事件期间更新JFrame对象?的主要内容,如果未能解决你的问题,请参考以下文章