我有一个内置JFrame的UI。其中一个按钮开始一个长时间的运行调用(仍在同一个java进程中),并且在执行期间,UI被冻结。强制JFrame刷新
我想,为了清楚事情还在进行中,我可以在弹出窗口中显示进度条,以便用户可以随时了解程序正在执行的操作。
所以我创建了一个新的JDialog,添加了一个JProgressBar对象,并在事件发生时更新它。问题是该对话框的内容没有得到更新。我对它的标题所做的更改立即显示出来,以及我输出到控制台的任何内容,但是UI本身没有任何内容。
是否有一个命令我可以强制重绘?
下面是本节的核心:
killWindow = new JDialog();
killWindow.setUndecorated(true);
killWindow.setTitle("stopping tests - 0 of " + numActive);
killProgress = new JProgressBar(0, numActive);
killWindow.add(killProgress);
killProgress.setStringPainted(true);
killWindow.pack();
killWindow.setLocationRelativeTo(frame);
killWindow.setVisible(true);
然后,当我们进步...:
killProgress.setValue(++killedTests); // not seen!
killProgress.setString("Killing test on " + nickname()); // not seen!
log("Killed another test, " + killedTests + " so far"); // visible in real time
killWindow.setTitle("stopping tests - " + killedTests +
" of " + killProgress.getMaximum()); // visible in real time
我缺少什么?我试着在Google上搜索并搜索,并没有真正看到任何明显的东西?