我有几个关闭步骤需要在处理之前在WindowClosing事件期间执行。一切都正常执行,但我想添加在关闭的JFrame中的现有JLabel中提供关闭状态消息的功能。是否可以在WindowClosing事件期间更新JLabel文本?
答案 0 :(得分:0)
不确定。只需确保在开始与组件交互之前不处理组件。
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// update label here
}
});
答案 1 :(得分:0)
但我想添加在关闭JFrame中的现有JLabel中提供关闭状态消息的功能
label.setText(....);
label.paintImmediately(label.getBounds());
侦听器中的代码在Event Dispatch Thread上执行,因此GUI不会重新绘制自己,直到执行所有侦听器代码,到那时GUI将被关闭。
paintImmediately(...)
将允许组件绕过RepaintManager并立即绘制自己。
答案 2 :(得分:0)
我使用以下代码在后台执行关机步骤,然后关闭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();
}
});