Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JProgressBar没有';当JDialog';s模态_Java_Swing_Modal Dialog_Jdialog_Jprogressbar - Fatal编程技术网

Java JProgressBar没有';当JDialog';s模态

Java JProgressBar没有';当JDialog';s模态,java,swing,modal-dialog,jdialog,jprogressbar,Java,Swing,Modal Dialog,Jdialog,Jprogressbar,我知道没有办法使JProgressMonitor模式,人们宁愿使用JDialog和JProgressBar。现在,我可以工作了——但前提是我不想让JDialog模式化。谁能告诉我我做错了什么 private Frame frame; private JPanel contentPane; private JProgressBar progressBar; public MainClass() { JButton startBtn = new JButton("Start");

我知道没有办法使
JProgressMonitor
模式,人们宁愿使用
JDialog
JProgressBar
。现在,我可以工作了——但前提是我不想让
JDialog
模式化。谁能告诉我我做错了什么

private Frame frame;
private JPanel contentPane;
private JProgressBar progressBar;

public MainClass() {
    JButton startBtn = new JButton("Start");
    startBtn.addActionListener(new ActionListener()
    {
        @Override
        public void actionPerformed(final ActionEvent arg0)
        {
            new Thread(new Runnable()
            {
                @Override
                public void run()
                {
                    createJDialog();

                    for (int i = 0; i < 100; ++i)
                    {
                        final int j = i;
                        doInBackground(); // Batch process

                        SwingUtilities.invokeLater(new Runnable()
                        {
                            @Override
                            public void run()
                            {
                                progressBar.setValue(j);
                            }
                        });
                    }
                }
            }).start();
        }
    });
}

public void createJDialog()
{
    JDialog d = new JDialog(); 
    d.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    // Keeps progressBar from updating
    // d.setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
    // d.setModal(true);
    d.getContentPane().add(progressBar, BorderLayout.PAGE_START); 
    d.getContentPane().add(progressBar, BorderLayout.PAGE_END); 
    d.pack(); 
    d.setVisible(true); 
}
私有帧;
私有JPanel内容窗格;
私人JProgressBar progressBar;
公共类(){
JButton startBtn=新JButton(“开始”);
startBtn.addActionListener(新ActionListener()
{
@凌驾
已执行的公共无效操作(最终操作事件arg0)
{
新线程(newrunnable())
{
@凌驾
公开募捐
{
createJDialog();
对于(int i=0;i<100;++i)
{
最终int j=i;
doInBackground();//批处理
SwingUtilities.invokeLater(新的Runnable()
{
@凌驾
公开募捐
{
progressBar.setValue(j);
}
});
}
}
}).start();
}
});
}
public void createJDialog()
{
JDialog d=newjdialog();
d、 setDefaultCloseOperation(在关闭时处理);
//阻止progressBar更新
//d.setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
//d.setModal(真);
d、 getContentPane().add(progressBar,BorderLayout.PAGE_START);
d、 getContentPane().add(progressBar,BorderLayout.PAGE_END);
d、 包装();
d、 setVisible(真);
}

调用
createJDialog()线程启动后不从内部
运行
调用
createJDialog()线程启动后不从内部
运行

调用
d.setVisible(true)
阻塞,直到对话框处于模式时对话框关闭为止


尝试在一个单独的线程中启动该调用。

d.setVisible(true)
的调用会一直阻塞,直到对话框处于模式时对话框关闭为止


试着用一个单独的线程来启动这个呼叫。

Stanislav,你让我开心!谢谢!斯坦尼斯拉夫,你让我开心!谢谢!