Bor*_*lis 1 java swing onclick
我onClick在 Java Swing 中有一个事件。
private void fastForward(java.awt.event.MouseEvent evt) {
loading.setVisible(true);
//some time consuming algorithm
loading.setVisible(false);
}
Run Code Online (Sandbox Code Playgroud)
在里面,我执行了一个消耗大量时间的操作,所以我想显示一个加载动画。
我创建了一个带有加载 gif 图标的按钮,我将按钮的可见性设置为 false。在onClick事件中,我的知名度设置为true。问题是当整个功能执行时按钮变得可见,这不是我想要的。我希望在函数执行期间显示按钮。如何在执行期间将按钮设置为可见。
那是因为,只有当 UI 线程空闲时,它才能更新 UI。这是你需要做的:
private void fastForward(java.awt.event.MouseEvent evt) {
loading.setVisible(true);
new Thread(new Runnable(){
@Override
public void run(){
//time consuming algorithm.
if(done){
SwingUtilities.invokeLater(new Runnable(){
@Override public void run(){
loading.setVisible(false);
}
});
}
}
}).start();
}
Run Code Online (Sandbox Code Playgroud)
上面发生的事情是这样的:
这样,按钮就不会被冻结。完成后,UI 线程会更新。
| 归档时间: |
|
| 查看次数: |
4116 次 |
| 最近记录: |