我目前正在自学Java。我尝试了不同的东西,如JRadioButton
,JcomboBox
等。现在,我正在尝试使用JProgressBar
,但它似乎无法正常工作。
相关代码片段:
JProgressBar progress;
JButton button; //Fields of the class
progress=new JProgressBar(JProgressBar.HORIZONTAL,0,100);
button=new JButton("Done"); //Done from methods
progress.setValue(0);
progress.setStringPainted(true);
progress.setBorderPainted(true); //Also done from methods
button.addActionListener(this); //Also done from methods
当点击按钮时,我希望显示 JProgressBar
从 0% 到 100% 。下面是 actionPerformed
方法的相关部分:
public void actionPerformed(ActionEvent e)
{
for(int i=0;i<=progress.getMaximum();i++)
{
progress.setValue(i);
/*try{
Thread.sleep(10);
}catch(InterruptedException ex)
{
System.err.println("An error occured:"+ex);
ex.printStackTrace();
}*/
}
progress.setValue(progress.getMinimum());
}
我已将
progress
和button
都添加到一个JPanel中,并将该面板添加到一个JFrame上,然后使用setVisible(true);
。问题在于,每当我按下JButton
button
时,JProgressBar progress
并不会从0%到100%。相反,什么也没有发生。如果我取消注释try...catch
块,然后按下button
,程序会“冻结”一会儿,然后继续执行。这次,JProgressBar仍停留在0%,我从未看到它移动。我还尝试在try...catch
块后添加repaint();
,但结果相同。我尝试添加
System.out.println(i+"");
在
actionPerformed
中的for
循环内,这将数字0到100打印在终端上。所以我确定循环运行了。我该如何解决这个问题?
actionPerformed
方法,让我得到期望的结果吗?对我来说,浏览许多在线教程并找出如何做很困难。 - Spikatrix