【问题标题】:How do "professionals" make a GUI in java?“专业人士”如何在java中制作GUI?
【发布时间】:2010-04-11 14:09:39
【问题描述】:

感谢您对my previous question about GUI in java 的回复。我现在想知道专业人士为“真正的”应用程序选择了哪些解决方案来获得漂亮的 GUI。您是否使用 swing 和 JComponents 并只是更改“外观”?你更喜欢 awt 还是其他库?

对不起,如果这个问题听起来很奇怪,我是一名学生,我真的不知道 java 在现实世界中是如何使用的......

【问题讨论】:

  • @Jules Olléon:我发布了用 Java 编写的可在 Windows、OS X 和 Linux 上运行的商业软件。我使用 Swing 和 IntelliJ 的 GUI 编辑器(它非常棒,因为它会自动向您隐藏许多样板文件、毫无意义、冗长无趣的 Swing 代码)和一些定制组件(这些组件在每个平台上都 100% 相同)。就像一个自定义的双/三/四进度条、自定义的“查找时键入”列表(就像 Google 用来提供建议的那个),以及一些针对我的问题域的更高级的自定义组件。
  • @WizardOfOdds:你在 Windows 和 Linux 上使用的是什么 LaF?您使用的是 Windows 和 GTK 样式还是 Swing 默认样式?
  • @Jonas:在 Windows 上,我们为用户提供默认 Swing 布局和 Nimbus 之间的选择。在 Linux 上,它是默认的 Swing,不管它是什么:但是有很多问题(包括关于 SO 的很多问题)。例如,我们有“可关闭的标签”并且我们必须在 1.5 下运行。因此,我们有自己的标签等渲染器。这是一个不兼容的wild世界 :) 该软件在 Linux 上运行,我们的开发人员确实在 Linux 上开发和测试它,但我们只在 OS X 和 Windows 上销售 :)
  • @Jonas:对我来说 Swing 主要是一个糟糕的笑话:JTable 已经无法修复,JTabbedPane 也是如此(显然 Oracle 可能比 Sun 更重视桌面 Java)。我的意思是,Swing 是如此的糟糕和不必要的复杂,以至于 Eclipse 家伙决定重新发明一个轮子。而当针对多个平台时,可以很快看出 Swing 的不足之处。这不是一个有趣的 API。它不是OO,它不快(它是一头猪),它使用起来并不愉快。对我来说 Swing 是一个 POS。为了获得可用的 JTable,我们必须这样做:java.sun.com/products/jfc/tsc/articles/ChristmasTree Pathetic :)
  • @WizardOfOdds:谢谢,这是很有见地的 cmets。

标签: java user-interface


【解决方案1】:

在我们公司,我们使用 Swing,因为 JVM 开箱即用地支持它,但我们确实为某些面板和按钮使用了彩色编码的背景颜色。

如果我们使用不同的东西,比如 SWT 或Jambi,我们还必须为所有平台推出这些框架,并为所有操作系统和(支持的)java 版本测试这些框架。一点都不好看。

然而,使用 Swing 创建一个响应良好的应用程序是相当棘手的;所以你真的需要使用 SwingWorker 之类的。但是,只要有一点经验,您就可以通过这种方式创建一个不错的应用程序。

即使它不是最快的开发框架,与定义用户界面的功能需求以及版本发布时的测试和支持相比,开发时间也非常短。

也就是说,我们的目标是台式机。如果您面向移动设备或还需要 Web 前端,您的选择可能会有所不同。

【讨论】:

    【解决方案2】:

    我相信没有人会再喜欢 AWT 了。 Swing 在 11 年前完全取代了它,在它之上构建以纠正 AWT 1.0 设计中的缺陷。

    Swing 并不是专业人员制作 Java UI 的唯一方式。这适用于台式机,但现在也有 JavaFX。对于 Web,UI 是使用 HTML、CSS、JavaScript 和 JSP 构建的。

    【讨论】:

    • 看在上帝的份上,请不要使用AWT!开发为 Web 应用程序有许多优势 - 其中最重要的是更容易部署。
    • @Stephen AWT GUI 和网络应用程序完全不同。这取决于你想要做什么。然而,Swing 比 AWT 有优势,尽管 AWT 包仍然用于事件处理。
    • @aduric,我不打算将它们呈现为相同的。我只是说两件事 1)awt GUI 很糟糕,2)网络应用程序有很多优点。但是,GUI 和 Web 应用程序并没有完全不同,您通常可以在 Web 应用程序中执行大部分本地操作。
    • 对于 web GWT 也是一个很棒的平台——尤其是如果你已经了解 Swing
    【解决方案3】:

    我的经验是,大多数想要创建丰富的 GUI 的组织仍然使用 Swing,并手动解决布局管理器的所有烦恼等。

    SWT 的使用仅限于使用 Eclipse RCP 作为其平台的组织。我不确定为什么它没有在这个平台之外流行起来。

    承认很难过,但 Java Swing GUI 通常看起来并不好,除非您花费大量时间为它们创建更原生的感觉。即便如此,它们在美学上也经常会输给专门为 Windows 编写并使用 WinForms 等 Window API 的等效程序。

    【讨论】:

    • 你应该试试 Netbeans 中的 GUI 设计器!
    • 让 UIManager 设置系统类的外观在 Windows 上确实很好。一切看起来几乎与原生 Windows 应用程序相同。这里和那里有一些微小的差异(主要在 AWT 组件中),但 Swing 在模拟原生外观方面做得很好。
    【解决方案4】:

    我在过去几年看到的最体面的应用程序是使用 Eclipse 构建的 Rich Client Platform

    Eclipse 使用Standard Widget Toolkit

    并提供Graphical Editing Framework (GEF)

    【讨论】:

      【解决方案5】:

      我们通常使用 Swing,因为它在开箱即用的标准 JRE 中得到支持。通常我们在 Netbeans 中进行初始表单设计和事件连接,然后将其导出到我们想要的任何东西,例如 Eclipse。

      Netbeans 使用标准库(加上你必须包含的一两个 jar)生成纯 Java,因此在 Netbeans 中设计表单并随后转向其他东西没什么大不了的。

      有些人建议使用布局管理器手动进行表单布局。我认为,只有当您正在做一些必须无限期维护的大型且预算非常充足的事情时,这才是一种选择。否则太费时间了,不值得。

      【讨论】:

        【解决方案6】:

        我们的 Java GUI 依赖于 SWT。是的,您必须包含一个外部原生库,但外观和感觉是原生的,响应速度更快(尽管 Swing 在过去几年变得更快)并且与目标平台上的其他应用程序无缝。

        【讨论】:

          【解决方案7】:

          Macintosh OS X 创建自己的 Java 运行时。它们使 Swing 组件具有与本机应用程序相同的外观和感觉。

          我严格使用 Swing。我通过 Web Start 为 Mac 和 Windows 分发“真正的”桌面应用程序,这些应用程序与用户的智能卡读卡器交互。

          NetBeans IDE 为您提供了一种所见即所得的方式来创建表单。我试过了,它很简洁,但我们仍然使用 Eclipse 作为我们的 IDE,并在代码中设计表单。

          【讨论】:

          • NetBeans 所见即所得编辑器是一场噩梦。如果您负担得起,我会推荐 JFormDesigner,或者直接使用布局管理器手动完成。一开始可能会做更多的工作,但从长远来看,您拥有更多的控制权。
          • 抱歉,不是。您可以完全控制去哪里以及所有属性和绑定等等。你只需要知道去哪里找。顺便说一句:据我所知,MacOSX 使 AWT 看起来像 macos aqua,而不是摇摆。
          • @Tedil,我做了一些研究,似乎 Mac OS X 使 AWT 和 Swing 看起来都像 Aqua。我们肯定使用 Swing,它看起来绝对像 Aqua。
          猜你喜欢
          • 2012-12-14
          • 2011-08-02
          • 2017-03-18
          • 2010-11-27
          • 2013-02-24
          • 2010-12-06
          • 2013-08-07
          • 1970-01-01
          • 2010-10-05
          相关资源
          最近更新 更多