Java - 计算后打开的进度条

标签 java swing

我有使用 ProgressBar 的主文件。 在主文件中,我将 ProgressBar 称为

ProgressBar pbFrame = new ProgressBar();
pbFrame.setVisible(true);

我在调用可执行文件“calculate.exe”后调用ProgressBar以显示calculate.exe现在正在工作。但是当“calculate.exe”完成时,ProgressBar 将打开。如何让“calculate.exe”和ProgressBar并行执行?我听说过 SwingWorker,但我完全不明白如何在我的应用程序中使用它。

我的进度条文件:

public class ProgressBar extends JFrame {

static private int BOR = 10;
private String filename;

public ProgressBar() {
super("Calculating progress");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel panel = new JPanel();
    panel.setBorder(BorderFactory.createEmptyBorder(BOR, BOR, BOR, BOR));
    panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

    panel.add(new JLabel("Calculating..."));

    panel.add(Box.createVerticalGlue());

    JProgressBar progressBar1 = new JProgressBar();
    progressBar1.setIndeterminate(true);        
    panel.add(progressBar1);

    panel.add(Box.createVerticalGlue());

    JPanel buttonsPanel = new JPanel();
    buttonsPanel.setLayout(new BoxLayout(buttonsPanel, BoxLayout.Y_AXIS));

    buttonsPanel.add(Box.createVerticalGlue());

    JButton quitButton = new JButton("OK!");
    quitButton.setHorizontalAlignment(JButton.CENTER);
    quitButton.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent event) {
           dispose();
      }
   });

   panel.add(quitButton);

   getContentPane().setLayout(new BorderLayout());
   getContentPane().add(panel, BorderLayout.CENTER);
   setPreferredSize(new Dimension(200, 110));
   setLocationRelativeTo(null);
   pack();
}

}

提前致谢!

最佳答案

您可以使用执行器进行后台进程。在这种情况下,您的进度条将在 EDT 中工作,而您的calculate.exe 将在另一个线程中工作。试试这个代码:

ProgressBar pbFrame = new ProgressBar();
pbFrame.setVisible(true);       
Executors.newSingleThreadExecutor().execute(new Runnable() {

            @Override
            public void run() {
                // run background process

            }
        });

关于Java - 计算后打开的进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19538040/

相关文章:

java - 如何将 JLabel 对齐到 JPanel 的底部

java - 是否可能 - 来自数组值的边框布局位置?

java - 文件列表中每个元素的 Ant zipfileset

java - 我如何在Java/eclipse中使用这个东西? (★)

java - hibernate - 禁用 MySQLIntegrityConstraintViolationException

java - 为什么我的程序不考虑将用户输入的值相加?

java - 是否可以在 Swing 中为 JFrame 创建不同的外观?

java - powermockito:如何模拟枚举中的抽象方法

java - 等待按钮单击以继续程序

java - 如何更改JButton?