是否适合扩展JPanel以创建2D游戏的绘图表面?

时间:2012-02-24 21:26:21

标签: java swing user-interface

我正在将2D游戏从Applet转换为JFrame。我知道我应该将一个JPanel添加到JFrame并使用JPanel作为我的绘图表面,但我不确定我应该继承什么子类。我正在尝试使用JFrame,但我已经读过,扩展JFrame通常是不必要的,也是一个坏主意(我还没有添加任何额外的功能,所以这很有意义)。我需要覆盖JPanel的paintComponent()方法,所以现在我倾向于扩展JPanel。有没有更好的方法来创建2D游戏界面或者扩展JPanel并将其添加到JFrame以适当的方式来实现它?

2 个答案:

答案 0 :(得分:3)

不,没有更好的方法,这是一个非常好的选择。 如果您要扩展JFrame(另一个选项),您的动画将在大多数Windows系列操作系统上闪烁。

JPanel是一个纯粹的摇摆组件,在Java中的反应比JFrame等对等组件更好。

你的选择很好,继续编程很有趣。

答案 1 :(得分:0)

<强>更新

自从我最初回答这个问题后,我对这方面的了解有所增加,我同意@Snicolas你应该使用JPanel。

JPanel(因为它是一个摇摆组件)内置支持双缓冲(AWT没有)并且具有更好的性能(所以我听说,但我没有第一手经验)。

您可能会发现这篇文章很有用:http://www.oracle.com/technetwork/java/painting-140037.html#swing

原始回答:

我建议您使用子类Canvas或Component或JComponent。我的偏好是Canvas。您应该阅读2d graphics tutorial

<强>更新

使用Canvas,因为它接收所有用户输入事件,并且没有作为容器的包袱。 read more。例如,面板不会接收所有鼠标输入事件。