关于Swing组件扩展的经验法则是什么?

时间:2011-05-27 17:30:31

标签: java swing extend jcomponent

将一个类专用于特定的Swing组件时,extend该特定组件更好,或者在内部构造它并提供引用?

public class Foo extends JComponent{

}

public class Foo{
    public JComponent getComponent(){
    }
}

修改

我的意思是奉献

public class Foo{
    private static Foo INSTANCE;

    public static Foo getInstance(){
        if(INSTANCE == null){
            INSTANCE = new Foo();
        }
    }

    public void createAndShowComponent(){
        //do stuff
    }
}

createAndShowComponent()内,我创建了一个JComponent及其所有组件及其各自的侦听器,没有公开我刚刚创建的组件的内部。

6 个答案:

答案 0 :(得分:7)

+1 for Composition over extension。它使API更加清晰,因为您只公开了对新组件重要的方法

答案 1 :(得分:3)

我同意jzd一切都取决于。

从技术上讲,如果您在处理GUI,我认为最好在需要时构建组件,例如扩展JComponent。这样您就可以简单地重复使用它们。

我个人不会在课堂上使用第二个选项。只有在有充分理由这样做时,我才会让一个类返回另一个组件,例如使用户能够修改复杂日历组件中的按钮外观。

由于一个非常简单的原因,每个组件类应该知道它具有该组件的内容,并且它应该根据发生的情况控制视图。因此,您将拥有适当的方法。

答案 2 :(得分:2)

我想说扩展它会更好。能够使用它的所有属性并像使用它一样使用它会使它更加简单易用。只是我的个人意见。两种方式都很好。

如果你将整个课程奉献给它。不妨通过继承来做到这一点。

答案 3 :(得分:2)

如果你的对象是一个组件,那么扩展它。如果没有,那就使用组合。

答案 4 :(得分:1)

这实际上取决于你在做什么。例如,如果要在JPanel中包含新类,则需要扩展组件。如果您的代码可以将组件添加到GUI上的正确位置,那么您不必扩展它。

答案 5 :(得分:1)

我不会说他们。摆动组件非常(非常)丰富,并且可以以任何方式定制用于可视化(L& F)和行为(事件)。另一点是创建一组不同的组件并将它们放在JPanel中。