在swing GUI中选择继承与组合

时间:2015-04-14 12:39:19

标签: java swing

我曾经习惯用netbeans拖放做java swing编程,从来没有真正关心它生成的代码。现在我正在学习编写GUI而不拖放。

我遇到的根本问题是,我是否要制作IS_A JFrame或HAS_A JFrame的窗口。即是否使用遗传或组合。

如果MyWindow是JFrame

public class MyWindow extends JFrame{

}

如果MyWindow有一个JFrame

 public class MyWindow{
     private JFrame frame; 
 }

对我而言似乎都很好。但我想应该有正确的方法从这两个中做到这一点。什么是正确的方法,为什么?

1 个答案:

答案 0 :(得分:0)

如果你希望你的类表现为一个窗口,那么你应该从JFrame扩展它(至少在我看来)。据我所知,这就是你应该如何去做的。

另一方面,如果您想要一个可以访问窗口的类,那么您将使用第二个选项。话虽这么说,你仍然需要初始化一个从JFrame扩展的类。

编辑:问题的答案确实说明了,但它也说它取决于你所追求的。如果我正确理解答案(也许其他人可以对此进行评论),如果你有一个场景需要一个框架来打印一个表到一个表,你可以有一个extends框架并提供一个实用工具的类接收列表并将其打印到表格的方法。然后,您的逻辑将实例化此类而不是实际的JFrame,并使用它来显示数据。

我的方法是,通常,我有一个扩展JFrame的类,并提供一系列方法,使打印数据变得容易。然后我会有另一个类,它链接逻辑和视图层。该类将引用JFrame扩展类。