【发布时间】:2018-04-23 20:47:52
【问题描述】:
我目前正在尝试重新创建 Breakout,并且想知道如何实现基本 gui。我的结构是一个包含 JPanel 的 JFrame,而 JPanel 是实际保存游戏元素的东西。 JFrame 通过将其添加到其内容窗格 [frame.getContentPane().add(myPanel)] 来获取此 JPanel。
我的问题是,保存游戏元素的类应该扩展 JPanel 还是简单地返回一个 JPanel?
public class myPanel {
private JPanel panel;
public myPanel() {
panel = new JPanel();
//do stuff with the panel
}
public JPanel getPanel() {
return panel;
}
}
public class myPanel extends JPanel{
public myPanel() {
panel = new JPanel();
//do stuff with the panel
}
}
【问题讨论】:
-
您是否打算覆盖
JPanel的任何方法? -
如果您打算直接在 JPanel 中绘图,您应该继承子类,因为您可能想要覆盖
paintComponent(Graphics g)来绘制您的自定义内容 -
似乎扩展 Swing 组件是一件很常见的事情,但没有意义,除非您试图覆盖一个方法(如此处所述)。我的偏好是永远不要扩展组件(包括 JFrame 或 JDIalog 之类的窗口组件),除非您需要重写方法或创建扩展 JComponent 的自定义 swing 组件。
标签: java user-interface 2d-games