扩展JFrame

Ano*_*181 9 java inheritance swing composition jframe

扩展JFrame而不是创建新的JFrame有什么优缺点?

例如:

public class Test extends JFrame {

setVisible(true);

}
Run Code Online (Sandbox Code Playgroud)

要么

public class Test {

JFrame test = new JFrame():

test.setVisible(true);

}
Run Code Online (Sandbox Code Playgroud)

MBy*_*ByD 10

您不应该扩展类,除非您想要实际扩展其功能,在您显示的示例中,您应该使用选项2,因为选项1是滥用extending功能.

换句话说 - 只要问题的答案是测试a JFrameNO,它不应该扩大JFrame.


Hov*_*els 8

没有扩展JFrame(或任何Swing组件)的优点:

  • 避免无意的方法覆盖.我已经多次介入过这个问题,首先是我给了我的课程int getX()int getY()方法.尝试一下,你会看到一些不那么有趣的异常行为.
  • 将Eclipse或NetBeans仅用于您创建的方法时,简化可用的方法选项.这实际上是我最喜欢的优势.
  • 使用GUI来创建JPanel而不是JFrame,从而将部署灵活性提高了100倍.
  • 最重要的是,只暴露需要暴露的东西.

  • *"设置你的GUI以创建JPanel而不是JFrame .."*当然,但要注意不要陷入扩展面板的同一陷阱(除非实现自定义绘制行为等). (2认同)