Rya*_*yan 3 java user-interface swing jprogressbar
我有一个GUI问题,我想整理出来,但我对发生的事情感到困惑,希望你们中的一个人能解释一下.代码库太大而无法上传,但我会详细解释发生了什么:
我有一个类ProgessBar是一个JDialog包含摆动JProgressBar.我有一些吸气剂和制定者可以根据自己的喜好改变标准,但问题就出现了.
ProgressBar是在方法中生成的 myButtonActionPerformed
myButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
myButtonActionPerformed(evt);
}
});
Run Code Online (Sandbox Code Playgroud)
基本上当用户点击此按钮时,处理开始并ProgressBar产生.
用户当前有一个JFrame在他们面前,这个进度条弹出一个JDialog.在Netbeans中逐步调试模式之后,我可以看到它JProgressBar的值发生了变化,但是当我的程序处理时,条形图在视觉上保持0%,然后在它离开上面的添加动作侦听器方法时立即跳转到100%,几乎为如果它等待重画,直到听众.我不明白的是什么?有什么我可以调用它会强制它在这个myButtonActionPerformed方法内更新,而不是等到它没用.
你在做EDT的那段时间吗?请记住,AWT/Swing有一个专门的线程来完成GUI工作 - 处理事件处理程序,重新绘制GUI等.如果你在该线程上做长时间的事情,Swing将不会重新绘制.
尝试在另一个线程中执行您的任务并相应地更新进度条.但是,使用SwingUtilities.invokeLater或invokeAndWait更新进度条以确保在EDT上进行GUI更新.否则事情变得非常奇怪.