【问题标题】:One JFrame and 50 JPanel on that or only 50 JFrame alone or any alternative?一个 JFrame 和 50 个 JPanel,或者只有 50 个 JFrame 或任何替代方案?
【发布时间】:2013-06-01 02:14:45
【问题描述】:

这是我的程序的图片。所有这些 JMenuItem 都在一个 JFrame 中,我为它们中的每一个都添加了 JPanel。当用户点击一个 JMenuItem 时,所有的 JPanel 都将不可见,只有对应的 JPanel 有效。

这是一个好方法吗?我的班级很大。在添加功能之前是 5000 行。

【问题讨论】:

  • 一个大的图形用户界面只有几行代码,但你把它们都放在一个类里了吗?下周你甚至不会明白它是如何工作的!
  • @arynaq 有什么替代方案。当用户点击不可见的 JMenuItem 这个框架并激活另一个时,当用户关闭另一个时我激活这个?
  • 我建议您通过 CardLayout,这完全适合您的应用程序场景。
  • 另请参阅The Use of Multiple JFrames, Good/Bad Practice?,了解组合或显示面板的想法。

标签: java swing jframe jpanel


【解决方案1】:

由于您似乎有相当数量的 JPanel,我认为将它们转换为 JFrame 不是一个好主意,因为这会使用户的桌面混乱(谁想要运行一个应用程序并突然发现他们的桌面充满了 6 个或更多的新窗口?)。

所以“JPanel”的选择似乎是合乎逻辑的。

不过,如果您想让用户选择自定义排列这些面板(例如重叠、并排等),那么 JDesktopPane 可能是一个不错的解决方案。 (另外,请查看 Java Tutorials 的相关部分。)


与您的问题没有直接关系,但拥有如此庞大的类(5000 行没有功能......)不被认为是一种好的编码实践(如果不是出于可维护性原因的话)。
来自 Oraclre 的 Code Conventions for the Java Programming Language,部分 3 - File Organization

超过 2000 行的文件很麻烦,应该避免使用。

因此,尝试将其分解为更小、更可重用和可维护的代码/类片段可能是个好主意。

【讨论】:

  • 感谢您的回复,当您有这样的程序时,用户单击每个 JMenuItam 并且有一个功能。你会怎么做?在 JFrame 中为它们中的每一个创建一个 JPanel,或者单独的 JPanel 类并将它们添加到 JFrame。我该怎么做?
  • 如果您问每个 JPanel 的 代码 是否应该与主 JFrame 类在同一个类/文件中,答案肯定是否。 (如果你问别的问题,那我误解你了:))
  • 是的,你是对的,如果你说不,还有什么选择?
  • 主 JFrame 一个类,每个 JPanel 一个类(可能是所有 JPanel 都会扩展的通用 JPanel 类)。如果您的项目/应用程序足够大(看起来确实如此),您还应该考虑将演示文稿(GUI)与“业务”逻辑分开,因此对于每个组件(即“JPanel”),您可以有单独的类来处理根据 MVC 范式具有不同的方面。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 2015-03-11
  • 2013-04-15
相关资源
最近更新 更多