我的JDialog组件有一些问题。
1- DialogWait扩展了JDialog并定义了一个不确定的JProgressBar。似乎随机没有出现进度条,并且对话框似乎崩溃了(未执行任何操作,如果按X则无法关闭它)。 看到:
2-再说一次,当我调用dispose()时,对话框不会消失。它似乎卡在了dispose()方法之前(我在控制台上进行了一些打印验证)。结果是应用程序不会继续运行,并且不会从swingworker中退出。
DialogWait dialogWindow = new DialogWait();
SwingWorker<Void, Void> swingWorker = new SwingWorker<Void, Void>() {
@Override
protected Void doInBackground() throws Exception {
while(newTimeSet != _record.getCurrentTimeMs()) {
_record.stepForward();
if(valuesMap.get(varName).equals(value))
valuesMap.put(varName, value);
}
dialogWindow.close();
return null;
}
};
swingWorker.execute();
dialogWindow.makeWait("Loading");
DialogWait类:
public class DialogWait extends JDialog{
private JDialog dialog;
private JProgressBar progressBar;
public void makeWait(String msg) {
dialog = new JDialog(Gui.getMainFrame(), msg, JDialog.ModalityType.APPLICATION_MODAL);
progressBar = new JProgressBar();
progressBar.setIndeterminate(true);
JPanel panel = new JPanel(new BorderLayout());
panel.add(progressBar, BorderLayout.CENTER);
panel.add(new JLabel("Wait..."), BorderLayout.PAGE_START);
dialog.add(panel);
dialog.pack();
dialog.setPreferredSize(Gui.getMainFrame().getSize());
dialog.setLocationRelativeTo(Gui.getMainFrame());
dialog.setVisible(true);
}
public void close() {
dialog.dispose();
}
我很困惑,因为这些问题似乎在特定情况下不会发生。