执行 jButton 操作时立即更改 jLabel 可见性
Change jLabel visibility immediately when jButton action performed
我正在使用 NetBeans IDE,但在尝试将 jLabel 可见性更改为 true 时遇到了一些问题:
private void buttonActionPerformed(java.awt.event.ActionEvent evt)
{
LoaderLabel.setVisible(true);
try { sleep(1000000); } catch { ... }
}
能见度只有在长时间睡眠后才会改变...
问题是我想在这个方法中进行一些非常密集的计算,但同时呈现一些gif。
为什么 jLabel 可见性仅在函数结束时更改,我该如何解决?
谢谢! :)
这是因为您应该在 EDT 线程(事件调度线程)中设置组件的属性。
尝试:
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
LoaderLabel.setVisible(true);
}
});
或在 Java 8
中使用 Lambda
EventQueue.invokeLater(() -> LoaderLabel.setVisible(true));
我正在使用 NetBeans IDE,但在尝试将 jLabel 可见性更改为 true 时遇到了一些问题:
private void buttonActionPerformed(java.awt.event.ActionEvent evt)
{
LoaderLabel.setVisible(true);
try { sleep(1000000); } catch { ... }
}
能见度只有在长时间睡眠后才会改变...
问题是我想在这个方法中进行一些非常密集的计算,但同时呈现一些gif。 为什么 jLabel 可见性仅在函数结束时更改,我该如何解决?
谢谢! :)
这是因为您应该在 EDT 线程(事件调度线程)中设置组件的属性。 尝试:
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
LoaderLabel.setVisible(true);
}
});
或在 Java 8
中使用 LambdaEventQueue.invokeLater(() -> LoaderLabel.setVisible(true));