java - 从外部类检索值以便相应地显示 JProgressBar

标签 java user-interface

我从事一个项目,其中有一个用于 GUI 的类,另一个用于计算的类。

我想检索一些值,例如类计算的主 for 循环的增量 (i),以便相应地更新 GUI 类中的 JProgressBar。

我尝试过使用 SwingWorker 来做到这一点,但我有点迷失了。

此外,我无法在 main 中运行执行方法,有什么建议吗?

提前致谢, 麻醉

最佳答案

实现此目的的一种方法是将属性更改监听器从包含 JProgressBar 的类中附加到 SwingWorker 线程,如下所示:

worker.addPropertyChangeListener(new PropertyChangeListener() {
        @Override
        public void propertyChange(PropertyChangeEvent arg0) {
            if (arg0.getPropertyName().equals("progress")) {
                bar.setValue(Integer.parseInt(arg0.getNewValue().toString());
            }
        }
});

然后,当工作线程的值达到一定的间隔时,您将触发 PropertyChangeEvent 来更新进度条。

SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() {
     public Void doInBackground() {
         for (int i=0; i<100; i++) {
             // Do something
             firePropertyChange("progress", i-1, i);
         }

         return null;
     }

     public void done() {
        try {
            get();
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        }
     }
}

关于java - 从外部类检索值以便相应地显示 JProgressBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28579733/

相关文章:

java - JList 在自动滚动和自动选择时变坏(GUI 问题)

java - 我在哪里生成 javadoc html 文件?

java - 是否可以通过仅替换单个类文件来更新 Java Web 应用程序?

java - 禁用时如何阻止 JButton 变灰?

java - 尝试调试 logback syslog appender 不更新 syslog 的问题

java - hibernate 异常 : Could not obtain transaction-synchronized Session for current thread

python - 在 BeagleBone Black 中创建和链接 GUI

python - 如何为 "embedded"Raspberry Pi 创建简单的 GUI?

jquery - Windows XP 和 IE8 组合 - div 对齐问题

user-interface - python 3.2 的哪个 gui 框架