在摆动工人的propertyChange不会被调用(in swing worker property

2019-10-18 10:57发布

我有我已经使用了多年,其代码和今天早上我发现属性更改时任务完成后不会被调用。 我已经得到了摇摆工人设置为一个内部类,我把一个破发点上的字符串properyName = EVT .....它从不打破发点。

void loadData() {
    work2 = new bkgdLoadData();
    work2.addPropertyChangeListener(new PropertyChangeListener() {
        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            String propertyName = evt.getPropertyName();
            if( propertyName.equals("state")) {
                SwingWorker.StateValue state = (SwingWorker.StateValue) evt.getNewValue();
                if( state == SwingWorker.StateValue.DONE) {
                    work2 = null;
                }
            }
        }
    });
    work2.execute();
}

你可以看到,我设置对象WORK2当任务完成后为空,现在它不再被设置为null。 在课堂上,我增加了一个完成例程当doinbackground完成它击中。 更令人不解的是我为什么属性更改侦听器不会被触发。 一定有什么我没有注意到改变。

protected class bkgdLoadData extends SwingWorker<Integer, Object> {
    @Override
    protected Integer doInBackground() {
        switch(bkgdMode) {
            case 0:
                doRead();
                break;

            case 1:
                doWrite();
                break;

            case 2:
                runRobot();
                break;
        }
        return 0;
    }

    @Override
    protected void done() {
        int i=0;
        i++;
    }
}

在完成的断点击中,但没有财产变更通知交付。 (我把做程序,以核实该摆动工人知道它是做的唯一目的。)

我看了看文件,我没有看到,我必须手动断火某种性质变化的,所以我真的很坚持,并希望另一双眼睛,告诉我,我误以为是什么愚蠢的错误。

谢谢,宜兰

Answer 1:

原来,我的Java已损坏。 删除JDK 1.6和从仓库中重新安装它不够好。

我在Netbeans的链接1.6得到了damamged,我不得不重新安装的Netbeans以及(去那边7.3.1在这个过程中)。 Netbeans的将不承认该库JDK 1.6为有效,所以我不得不去Oracle和获得的原始版本。 Netbeans的认识到原来我上面报道的问题已经不再是一个问题。

我删除了无效完成()程序,因为它并没有比把一个破发点的地方其他目的。 该代码这样就可以了。 谢谢您的帮助。



文章来源: in swing worker propertychange isn't being called