【发布时间】:2015-01-13 10:51:36
【问题描述】:
这是我的代码:
public MyClass() {
JButton btnNext;
private void initComponents() {
btnNext = new javax.swing.JButton();
btnNext.setText("Lanjut");
btnNext.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnNextActionPerformed(evt);
}
});
}
private void btnNextActionPerformed(java.awt.event.ActionEvent evt) {
btnNext.setText("Loading...");
callingFunction();
}
}
注意:callingFunction() 是一个需要很长时间才能执行的函数。
我的问题是我的按钮文本只有在 callFunction() 完成后才会变为“正在加载...”。
如何立即将 btnNext 文本更改为“正在加载...”?
【问题讨论】:
-
我认为它类似于 btnNext.revalidate();虽然我不确定。但最好的方法是在单独的线程中完成你的功能
-
不要阻塞 EDT(事件调度线程)。发生这种情况时,GUI 将“冻结”。有关详细信息和修复,请参阅 Concurrency in Swing。
-
为了尽快获得更好的帮助,请发布MCVE(最小完整可验证示例)。
-
@WhiteNightFury 谢谢,但这不适合我
标签: java swing concurrency awt actionlistener