将一个类专用于特定的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
及其所有组件及其各自的侦听器,没有公开我刚刚创建的组件的内部。
答案 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中。