我目前正在使用Java作为学校作业开展我的第一个GUI编程项目。我已经非常熟悉在Java中设置类和方法,虽然在GUI编程的介绍中,我不确定如何最好地解决它。
我已经在自己的包中设置了GUI。我应该为每个JPanel
开一个新班吗?我附上了截至目前为止GUI的截图。
alt text http://www.aaronmoodie.com/gui.png
对此的任何建议都会非常棒。
答案 0 :(得分:4)
这取决于你想要达到的目标。例如,我不一定为每个JPanel创建一个单独的类。但是,如果面板是自定义(重写)面板,或包含许多其他组件的面板,或包含大量功能的面板,那么我将它放在它自己的类中。如果有意义,我会尝试按功能分开。我没有特别的理由这样做,除了在写了多个gui之后,这似乎使事情更简单,更清洁。例如,在上面的示例中,不了解您的程序。我可能会创建一个带有jPanel,标签和第一行组件列表的组件,这样我就可以重复使用组件,而不是一遍又一遍地重写逻辑。
答案 1 :(得分:2)
Javabuilders是我最喜欢做简单GUI的方法。您在YAML文件中声明了GUI元素+布局信息的层次结构,这比手动显式创建窗口并将它们添加到其父元素要容易得多。
我通常不会覆盖标准的GUI类。看起来你有一堆JLabel,JButtons,JLists和JSpinner,其中一些包含在JPanels中。您可以从管理其行为的任务中在层次结构(不需要任何自定义类)中正确分离创建所有这些窗口的任务,这通过向特定事件添加EventListeners非常容易您有兴趣管理的组件。
Javabuilders方法很好,因为你可以命名所有组件(这些是作为程序员可用的内部名称,不显示),让它管理窗口创建,然后通过名称以编程方式访问任何感兴趣的组件,而不是而不是必须遍历窗口层次结构。
答案 2 :(得分:1)
确保您了解MVC模式,特别是在Swing的上下文中。
扩展swing容器类(例如JPanel)通常是通过向组件添加可重用的应用程序语义来实现的。
除此之外,扩展(顶级JPanel)也是一个很好的候选类,用于公开管理嵌套组件的“控制”功能。例如,在您的gui中,顶级容器可以是一个扩展类,它具有根据用户操作管理嵌套面板状态的方法。 (但请注意,您不一定要扩展JPanel来管理嵌套组件的状态。)
答案 3 :(得分:0)
如果您使用的是Eclipse,我非常喜欢Jigloo GUI构建器。它是免费的非商业用途,价格相当合理。
我倾向于发现我使用类似Jigloo的东西来可视化地设置我的所有组件并为事件处理程序添加存根,然后在标准Java编辑器中重新打开相同的文件以将代码放在其后面。适合我。