0

我在使用JProgressBar. 我有一个可能需要一些时间的功能,并且我想要在执行该功能时处于不确定模式的进度条。我有一个激活此功能的按钮,我setIndeterminate(true)在调用该功能之前尝试过,之后,setIndeterminate(false)我没有让进度条在任何时候移动。

我有这个代码:

        progBar.setIndeterminate(true);
        //delay(12);
        //this.setEnabled(false);
        Executor executor = java.util.concurrent.Executors.newSingleThreadExecutor();
        executor.execute(new Runnable() {@Override
            public void run() {
                    function1();

            }});

        //progBar.setIndeterminate(false);
        //progBar.setVisible(false);
        System.out.println("End Function");
        //-........................
    }

也试过function1()没有任何新的执行者。如果我不评论该行setIndeterminate(false),进度条不会启动,但如果我评论它,它总是处于不确定模式。

请注意,我使用 Netbeans IDE 来设计一些 GUI,但我自己编写大部分内容(仅使用 NetBeans GUI 进行定位)。

4

1 回答 1

1

您可能应该移动此代码:

progBar.setIndeterminate(false);
progBar.setVisible(false);

SwingUtilities.invokeLater()调用后进入一个块function1()

它现在的设置方式将在setIndeterminate(true)调用后立即执行 - 该execute()方法不会阻塞。

例如:

executor.execute(new Runnable() {
        @Override
        public void run() {
                function1();
                // now fix the progress bar
                SwingUtilities.invokeLater(new Runnable() {
                    progBar.setIndeterminate(false);
                    progBar.setVisible(false);
                });
        }});
于 2012-05-27T22:28:02.507 回答