繁体   English   中英

仅在方法期间激活JProgressBar

[英]Activate JProgressBar only during a method

我在使用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进行定位)。

您可能应该移动以下代码:

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

调用function1()之后,将其放入SwingUtilities.invokeLater()块中。

现在,它的设置方式将在setIndeterminate(true)调用之后立即execute() -该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);
                });
        }});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM