Java 为JProgressBar创建单独的框架

Java 为JProgressBar创建单独的框架,java,swing,jprogressbar,Java,Swing,Jprogressbar,我有一个程序,当用户点击某个按钮时,我希望一个新的小框架出现在进度条上。我不希望用户在流程完成之前能够做任何其他事情。当我把进度条放在一个单独的框中,按下按钮时弹出一个框,更新进度条时遇到问题。如果我将进度条与按钮放在同一面板中,则它会正确更新,但这不是我想要的。我需要它在一个新的框架,我需要用户必须等待它完成。我该怎么做?谢谢 我使用以下代码创建框架: void designProgressFrame() { progressFrame = new JFrame("Progress")

我有一个程序,当用户点击某个按钮时,我希望一个新的小框架出现在进度条上。我不希望用户在流程完成之前能够做任何其他事情。当我把进度条放在一个单独的框中,按下按钮时弹出一个框,更新进度条时遇到问题。如果我将进度条与按钮放在同一面板中,则它会正确更新,但这不是我想要的。我需要它在一个新的框架,我需要用户必须等待它完成。我该怎么做?谢谢

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

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方法更新进度条,但由于某些原因,进度条没有更新。

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


表演代码。b如果你懒得接受你问题的答案,我也懒得帮你。您有27个问题,其中0个被标记为已回答。标记为未回答的问题要么是未回答的问题,要么是我自己找到了解决方案。@user3245747如果您自己找到了解决方案,请返回这些问题,添加您自己的答案,并将其标记为已接受的答案,以便其他人可以从中受益。