多个“屏幕”

时间:2012-02-29 00:09:12

标签: java swing awt custom-component

我在游戏上做了很多工作,而不是太花哨,我想知道制作菜单屏幕的最佳方法是什么。我目前正在使用单个JPanel作为基础 “绘画。”我想知道实现菜单屏幕等的最佳方法是什么。

到目前为止我的想法:

a)让当前JPanel处理菜单屏幕。

b)为他们制作新的JPanel并将它们交换到下一个;例如:如果我点击了新的游戏选项,那么切换到保存游戏设置的新JPanel

额外问题:

对于我们CanvasJPanel以外的某个其他组件,Applet上的播放能力和应用程序是否值得关注,它会更好吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

建议:

  • 如果这是一个Swing应用程序,那么一定要坚持使用Swa组件,例如JPanels。
  • 您的用户可能更喜欢交换JPanel,如果您决定采用这条路线,CardLayout会让您轻松做到。
  • 如果JPanels中显示的视图明显不同,您可能需要交换JPanels。如果只是改变文本的问题,那么你可以通过改变几个JLabel的文本而不是交换来实现。

答案 1 :(得分:2)

根据您的问题,我猜您的游戏视图完全是使用Graphics内的paintComponent()绘制的,并且主JPanel中已经没有任何其他组件。在这种情况下,只需切换您调用的绘图代码而不是将其他绘图代码放在完全不同的面板类中就可能更清晰。

修改

只是为了澄清:你想要交换JPanel的主要原因是原来的JPanel上安装了很多组件,监听器等,你需要换掉它们才能切换它显示菜单。如果菜单屏幕可以绘制为相同的Graphics并由同一MouseListener运行,我只会使用一个面板。

答案 2 :(得分:1)

  

对于我们CanvasJPanel以外的某个其他组件,Applet上的播放能力和应用程序是否值得关注,它会更好吗?

除非项目的其余部分使用AWT,否则不要使用Canvas。如果是Swing,并且组件包含自定义绘画,请使用JComponent。如果Swing和该区域内部放置了组件,请使用JPanel

为什么要对applet和应用程序进行区分?您是否考虑过在applet中使用AWT?