在JDialog上处理和JProgress Bar问题

时间:2019-06-26 13:28:09

标签: java jdialog swingworker jprogressbar

我的JDialog组件有一些问题。

1- DialogWait扩展了JDialog并定义了一个不确定的JProgressBar。似乎随机没有出现进度条,并且对话框似乎崩溃了(未执行任何操作,如果按X则无法关闭它)。 看到:  enter image description here

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();       
   }

我很困惑,因为这些问题似乎在特定情况下不会发生。

0 个答案:

没有答案