如何添加进度条?

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)


Cod*_*ind 5

你的问题有点模糊,但我觉得你希望进度条显示特定运行方法的进度,我将其称为"work()"方法.不幸的是,没有办法只将方法的引用传递给进度条 - 您的方法需要明确告诉进度条要显示的内容.这就是我要做的事情:

  1. 使进度条的引用可用于work() - 将其作为参数传递给work(),或者提供一个访问器方法,使work()中的代码可以调用以获取对进度条的引用.

  2. 在work()之后,在获得对进度条的引用(我将其称为"pb")之后,调用pb.setMinimum(0)和pb.setMaximum(n),其中n是您的方法具有的步数通过,渡过.

  3. 当您的方法完成每个步骤时,请调用pb.setValue(pb.getValue()+ 1);

  4. 在方法结束时,调用pb.setValue(0); 在返回之前重置进度条.

此外,如果您希望进度条显示String消息,则首先必须调用pb.setStringPainted(true),然后对进度条显示后续对pb.setString(string)的调用.