【问题标题】:Demonstration of Composition for Swing摇摆作曲示范
【发布时间】:2013-04-13 21:19:19
【问题描述】:

我目前正在攻读 Java 编程课程以攻读学位,虽然我已经对基本的编程概念有点熟悉,但在这门课程之前我从未专门使用过 Java。为了努力成为一名更好的程序员,我已经独立研究了每个作业和章节所涵盖的主题,并且有几次我在书中发现了一些似乎违反公认标准的做法(使用双精度表示货币,等)并最终从第三方信息中学习更多,以便尝试编写更好的代码。

当前章节介绍了 Swing 和 GUI 的创建,但它非常明确地建议使用继承来扩展 Swing 类,完全没有提到使用组合,这是最基本的搜索(在 StackOverflow 和其他地方)似乎建议将是一个更有效的解决方案。因此,本章中的示例都没有涉及使用组合来创建和实现 Swing GUI。

谁能指导我使用任何建议的在线资源,这些资源提供正确编写的初学者级示例/使用组合实现的 Swing GUI 演示?

【问题讨论】:

  • 即使你继承了 Swing 类,你也不能在没有组合的情况下使用 Swing。典型的 GUI 是通过将组件添加到面板、面板添加到框架等来创建的。这就是组合。
  • 参见组合与继承herehere,组合是关于返回,继承是关于扩展,尽量避免无论扩展 Xxx 补充 Xxx
  • 为了澄清,本书特别建议在创建 GUI 对象时扩展 Swing 类,而不是创建包含 GUI 对象的新对象,因此提供的演示和示例都是“Is-A”而不是“有个。”我正在寻找使用“Has-A”关系实现的 Swing GUI 的编写良好的简单示例。
  • 那么,例如,这本书是如何将按钮添加到面板的?如果不使用合成,我看不出它怎么能做到这一点。

标签: java swing composition


【解决方案1】:

仅评论,而不是答案,对 OP 的问题和基于她/他的书的知识

最简单的例子是用 JPanel 和 JButton 创建 JFrame


作曲

为每个 JComponents 创建一个带有局部变量的类

三个类,返回 JFrame、JPanel、JButton


继承

三个类与

第一类扩展 JFrame

第二类扩展 JPanel

第三类扩展JButton

另一个动物园


现在的问题是如何更改为组合和继承两种方式创建的对象的背景

【讨论】:

  • 假设本书使用“public class WindowType extends JFrame”创建一个GUI对象,定义组件(面板、标签等),在构造函数中设置信息(setTitle()、setSize()),并具有使用这些组件构建面板的方法。现在假设我想通过“public class WindowType”创建同一个窗口,并在这个类中创建一个新的私有 JFrame 对象,而不是扩展 JFrame 类。我最终得到的(并且正在寻找的例子)是由于这种变化,结果类的结构是否会发生任何重大变化。
  • 是的,但是 JFrame 不可访问,肯定有 this.setXxx,但是对于非常简单的 GUI,否则可能会被误解,也为 JFrame 创建一个局部变量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-02
  • 1970-01-01
  • 2019-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多