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

| 在将类专用于特定的Swing组件时,最好将那个特定的组件设置为“ 0”,或者在内部构造它并提供引用?
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
及其所有组件以及它们各自的侦听器,而没有暴露刚刚创建的组件的内部。     
已邀请:
        +1代表扩展。因为您只公开了对新组件重要的方法,所以它使API更加整洁     
        我同意jzd,这完全取决于。 从技术上来说,如果我认为要处理GUI,最好在需要时通过扩展JComponent来构建组件。这样,您可以简单地重用它们。 就个人而言,我永远不会在课堂上使用第二个选项。只有在有充分理由这样做的情况下,我才会让类返回另一个组件。使用户可以修改复杂日历组件中的按钮外观。 出于非常简单的原因,每个组件类都应该知道它具有该组件的作用,并且应该根据发生的事情控制视图。因此,您将拥有适当的方法。     
        我会说扩展它会更好。能够使用其所有属性并像使用它一样使用该对象,使它的使用更加简单。只是我个人的意见。两种方式都很好。 如果您要为整个课程献身。也可以通过继承来实现。     
        如果您的对象是组件,则可以对其进行扩展。如果不是,则使用合成。     
        这实际上取决于您在做什么。例如,如果要在JPanel上包括新类,则需要扩展组件。如果您的代码可以将组件添加到GUI上的正确位置,则不必扩展它。     
        我不会说任何一个。 Swing组件非常(非常)丰富,可以以任何方式针对可视化(L&F)和行为(事件)进行定制。另一点是创建一组不同的组件,并将它们布置在JPanel中。     

要回复问题请先登录注册