java - Swing Worker - 传递许多参数

时间:2012-12-05 22:19:37

标签: java swing

我将许多参数(确切地说是10个)传递给我的类,它扩展了Swing Worker,所以我想知道是否有某种方法来创建一个帮助类,使我的代码更优雅和可读?任务对象属于类。代码工作正常,但我想知道如果我决定添加更多传递参数,是否可以使其更具可读性和更优化。

 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    SortThread task = new SortThread(a, brelem, sort, jButton1, brElemTextField,
            bubbleButton, selectionButton, insertionButton, jLabel3,
            konzola, startTime, stopTime, sekunde, jScrollPane2);
    task.addPropertyChangeListener(new PropertyChangeListener() {
        @Override
        public void propertyChange(PropertyChangeEvent e) {
            if ("progress".equals(e.getPropertyName())) {
                jProgressBar1.setValue((Integer) e.getNewValue());
            }
        }
    });
    task.execute();

}        

2 个答案:

答案 0 :(得分:4)

我无法真正为这个问题提供一个好的答案,因为我不太清楚你在做什么。我强烈建议查阅有关重构和设计模式的阅读材料,因为使用此类技术的经验将永远帮助您。

至于具体示例:似乎大多数参数都是UI控件 - 您可以尝试创建一个包含用户界面对象的对象,然后可以将其传递给构造函数来代替所有对象。 编辑:您不一定需要自己上课 - map也是可能的。

或者,如果您将SortThread设为inner class,则可以访问父级的字段,因此您无需将其传入。

当然,其他有更多经验的人可能会就此问题发表更多意见,但鉴于这个问题如此广泛,我认为无论如何我都会投入一些选择。

答案 1 :(得分:2)

不要将如此多的GUI组件传递给您的工作人员,而是让您的视图以PropertyChangeListener的形式向工作人员注册。 SwingWorker有一个firePropertyChange()方法,可以很方便地使用observer pattern