java - 我怎样才能从不同的类(class)到达进度条?

标签 java netbeans

我在 a.java 类(以表单形式)中有一个进度条。我需要从 b.java 类到达它。 我的进度条名称是jprog。(我把它放在调色板的表单中) 如何设置公开我的进度条?我在属性页中找不到它。 我在头等舱的进度条。但我想改变它在二等舱的值(value)。 谢谢。

最佳答案

考虑向您的第一个类添加一个 PropertyChangeListener 并在您的第二个类中使用 SwingWorker。 SwingWorker 有一个名为 setProgress() 的方法您可以调用它来设置进度条的值。然后,您可以重写第一个类中的 propertyChange() 方法并执行如下操作:

public void propertyChange(PropertyChangeEvent evt) {
    if ("progress" == evt.getPropertyName()) {
      int progress = (Integer) evt.getNewValue();
      progressBar.setValue(progress);
    }
}

使用几个类(ClassAClassB)的示例如下:

public ClassA extends JForm implements PropertyChangeListener{
    private JProgressBar progressBar;

    public ClassA(){
        /**
        * Your setup for the form
        */
    }

     /**
     * Invoked when task's progress property changes.
     */
    public void propertyChange(PropertyChangeEvent evt) {
        if ("progress" == evt.getPropertyName()) {
            int progress = (Integer) evt.getNewValue();
            progressBar.setValue(progress);
        }
    }

    public void someMethod(){
        ClassB classB = new ClassB();
        classB.addPropertyChangeListener(this);
        classB.execute();
    }
}

class ClassB extends SwingWorker<Void, Void> {
        /*
         * Main task. Executed in background thread.
         */
        @Override
        public Void doInBackground() {
            Random random = new Random();
            int progress = 0;
            //Initialize progress property.
            setProgress(0);
            //Sleep for at least one second to simulate "startup".
            try {
                Thread.sleep(1000 + random.nextInt(2000));
            } catch (InterruptedException ignore) {}
            while (progress < 100) {
                //Sleep for up to one second.
                try {
                    Thread.sleep(random.nextInt(1000));
                } catch (InterruptedException ignore) {}
                //Make random progress.
                progress += random.nextInt(10);
                setProgress(Math.min(progress, 100));
            }
            return null;
        }
}

关于java - 我怎样才能从不同的类(class)到达进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12313262/

相关文章:

java - 二叉搜索树,添加相同元素异常(exception)。

java - 我该如何从 835 EDI 文件中提取数据?

java - 过滤MySQL数据到JTable

javascript - 在 JSF 中添加外部 javascript

java - 你如何更新 Maven 管理的依赖项?

java - 基于 WordNet 的语义相似性 (WNetSS) API

java - 防止tomcat重用删除的类

java - JPA 实现——哪一个最好用?

java - 使用 Java,如何限制对象属性具有特定值?

java - Bitset 消耗更多内存