【问题标题】:Java - Building GUI for applicationJava - 为应用程序构建 GUI
【发布时间】:2012-02-09 08:44:15
【问题描述】:

这些年来我编写了很多 Java 应用程序,但其中绝大多数都是简单的命令行程序,只有几百行和(最多)几个类。

我的问题是这样的:

我现在如何设计/编写此应用程序的接口?我从哪里开始?我的意思是是否有任何教程/资源描述了所涉及的步骤? 我知道 Swing 存在,但你从哪里开始,它是唯一的选择吗?

感谢任何帮助/帮助...

【问题讨论】:

  • 首先我认为您需要决定如何部署应用程序。如果是桌面应用程序,那么是的,Swing 可以很好地为您工作。如果它是一个更加分布式的应用程序,那么其他想法可能会更好(?JSP?但后者超出了我的专业领域,因此我不会为此提供任何更具体的建议)。如果您决定使用 Swing,那么您需要查看 tutorials。
  • 在标签中添加了 3 个富客户端 GUI 工具包。
  • Java Web Start 是一个不错的部署选项。

标签: java swing user-interface swt awt


【解决方案1】:

Java 的富客户端 GUI 工具包基本上是:

  • AWT Sun 的 Abstract Window Toolkit 是用于制作 GUI 的原始组件工具包,这是一个基于使用本地组件的工具包。 AWT 仍然包含 J2SE GUI 非常重要部分的核心,例如 Graphics/Color/Java 2D、Image & BufferedImage、打印、D'n'D..。
  • Swing 当前主流的桌面应用。组件工具包。 Swing 在内部生成组件,并允许为 GUI 设置 Pluggable Look and Feel。 Swing 提供 AWT 中不可用的组件和功能,例如 JTable、JTree,支持 Swing 组件中的格式化文档(例如 RTF 和简单 HTML)。有关更多信息,请参阅 things that Swing provides beyond AWT。
  • Java FX 2 旨在(最终)替代 Swing, AFAIU。
  • SWT 是另一种选择,不是由 Oracle 编写的,使用的是本地人。我不会向学习富客户端编程的人推荐它,因为它更容易获得与 Swing 相关的答案。

【讨论】:

  • 我也强烈推荐 SWT 而不是 Swing。 Eclipse RCP 仍然比 Swing 应用程序框架更成熟。对我来说最重要的原因之一是 Linux 中 Swing/AWT 的字体渲染很糟糕。
  • @wyz 也许您需要研究设置运行时AA font setting 或其他与字体相关的设置。
  • @AndrewThompson 我尝试了各种设置。它会改进,而且绝对不能原生渲染。如果你能实现它,请发布快照并让我知道你的设置。我很高兴知道这个诀窍。 (顺便说一句,字体渲染是我在 Linux 中尝试 JetBrain 产品的主要原因,因为我无法忍受这种字体)。
  • “请张贴快照” 我的 Windows 7 机器的快照有什么用?
  • @AndrewThompson Windows 中的字体渲染对我来说是可以接受的。我的问题是 Linux 中的 Swing。
【解决方案2】:

您必须学习核心 GUI API java.awt 及其子包以及(扩展 API)javax.swing 及其子包。你可以开始-The Java Tutorial.

【讨论】:

  • 但是忽略 AWT 组件并使用 Swing。
  • @AndrewThompson - 欣赏!只有少数 AWT 组件,尤其是 Widget 组件 - Label、TextField、Frame、Panel 等应避免使用,而不应避免使用整个 AWT API/events/layout/print/graphics。
  • 有了这个澄清,我们同意。 Swing 很大程度上基于 AWT 包的非组件部分(并且一小部分基于/继承自一些 AWT 组件)。
【解决方案3】:

不,Swing 不是唯一的选择,但它是您应该开始的地方。 Swing 是java.awt 中一些GUI 对象的“新的和改进的”版本。大多数 Swing 对象都建立在它们的 AWT 对应部分之上,我们是全新的。 Swing 和 AWT 都是核心 Java API 的一部分,因此最好从 AVD 链接到的教程开始 (The Java Tutorial)

【讨论】:

  • JTable, JTree,支持 Swing 组件中的格式化文档。这种东西超越了“新的和改进的”,因为 AWT 没有提供类似的组件/功能。
猜你喜欢
  • 2013-08-30
  • 1970-01-01
  • 2014-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-17
  • 1970-01-01
相关资源
最近更新 更多