Joh*_*ohn 5 java user-interface swing progress-bar
我一直试图了解如何添加进度条,我可以在我实现的GUI中创建一个进度条并让它出现但是甚至在通过http://docs.oracle.com/javase/tutorial/uiswing/components查看之后/progress.html我仍然不清楚如何将方法设置为任务,以便我可以创建一个进度条来运行方法.请有人尝试向我解释这个问题,或者发布一个在GUI中使用的进度条示例,并将任务设置为方法.谢谢.
end*_*ian 14
也许我可以帮助你一些示例代码:
public class SwingProgressBarExample extends JPanel {
JProgressBar pbar;
static final int MY_MINIMUM = 0;
static final int MY_MAXIMUM = 100;
public SwingProgressBarExample() {
// initialize Progress Bar
pbar = new JProgressBar();
pbar.setMinimum(MY_MINIMUM);
pbar.setMaximum(MY_MAXIMUM);
// add to JPanel
add(pbar);
}
public void updateBar(int newValue) {
pbar.setValue(newValue);
}
public static void main(String args[]) {
final SwingProgressBarExample it = new SwingProgressBarExample();
JFrame frame = new JFrame("Progress Bar Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(it);
frame.pack();
frame.setVisible(true);
// run a loop to demonstrate raising
for (int i = MY_MINIMUM; i <= MY_MAXIMUM; i++) {
final int percent = i;
try {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
it.updateBar(percent);
}
});
java.lang.Thread.sleep(100);
} catch (InterruptedException e) {
;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
你的问题有点模糊,但我觉得你希望进度条显示特定运行方法的进度,我将其称为"work()"方法.不幸的是,没有办法只将方法的引用传递给进度条 - 您的方法需要明确告诉进度条要显示的内容.这就是我要做的事情:
使进度条的引用可用于work() - 将其作为参数传递给work(),或者提供一个访问器方法,使work()中的代码可以调用以获取对进度条的引用.
在work()之后,在获得对进度条的引用(我将其称为"pb")之后,调用pb.setMinimum(0)和pb.setMaximum(n),其中n是您的方法具有的步数通过,渡过.
当您的方法完成每个步骤时,请调用pb.setValue(pb.getValue()+ 1);
在方法结束时,调用pb.setValue(0); 在返回之前重置进度条.
此外,如果您希望进度条显示String消息,则首先必须调用pb.setStringPainted(true),然后对进度条显示后续对pb.setString(string)的调用.