为JProgressBar创建一个单独的框架

时间:2014-05-13 17:41:26

标签: java swing jprogressbar

我有一个程序,当用户点击某个按钮时,我想要一个带有进度条的小新框架。在完成此过程之前,我不希望用户能够执行任何其他操作。当我将它放在按下按钮时弹出的单独框架中时,我无法更新进度条。如果我将进度条放在与按钮相同的面板中,则它会正确更新,但这不是我想要的。我需要它在一个新的框架中,我需要用户必须等待它完成。我怎样才能做到这一点?感谢。

我使用以下代码创建框架:

void designProgressFrame() {
    progressFrame = new JFrame("Progress");
    progressFrame.getContentPane().setLayout(new BoxLayout(progressFrame.getContentPane(), BoxLayout.PAGE_AXIS));
    progressFrame.setSize(200, 100);
    JPanel panel1 = new JPanel();
    JPanel panel2 = new JPanel();
    panel1.setBackground(new Color(248, 248, 244));
    panel2.setBackground(new Color(248, 248, 244));
    progressFrame.getContentPane().setBackground(new Color(248, 248, 244));
    progressBar = new JProgressBar();
    progressBar.setStringPainted(true);
    progresslbl = new JLabel();
    panel1.add(progressBar);
    panel2.add(progresslbl);
    progressFrame.getContentPane().add(panel1);
    progressFrame.getContentPane().add(panel2);
    progressFrame.setLocationRelativeTo(null);
} 

并且在我的主程序中按下某个按钮后,我可以看到此框架并使用setValue()方法开始更新进度条,但由于某种原因,条形图未更新。

1 个答案:

答案 0 :(得分:0)

问题证明是并发问题。 mKorbel在此链接上提供的答案解决了这个问题。我所要做的就是使用SwingWorker:

JProgressBar in new thread JDialog