我有一个程序,当用户点击某个按钮时,我想要一个带有进度条的小新框架。在完成此过程之前,我不希望用户能够执行任何其他操作。当我将它放在按下按钮时弹出的单独框架中时,我无法更新进度条。如果我将进度条放在与按钮相同的面板中,则它会正确更新,但这不是我想要的。我需要它在一个新的框架中,我需要用户必须等待它完成。我怎样才能做到这一点?感谢。
我使用以下代码创建框架:
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()方法开始更新进度条,但由于某种原因,条形图未更新。
答案 0 :(得分:0)
问题证明是并发问题。 mKorbel在此链接上提供的答案解决了这个问题。我所要做的就是使用SwingWorker: