55

会定期提出与此类似的问题,但其中许多答案已经过时。

我需要用 Java 构建一个跨平台的桌面应用程序,其 GUI 质量与当代桌面应用程序相当。

Swing 是默认选择,但我还没有遇到过看起来至少不是很陈旧和笨重的 Swing 应用程序(我知道这是主观的,但使用 GUI 很难避免审美判断)。

我注意到新的比特币客户端现在使用 QT 和 Java 绑定,并且确实有一个吸引人的用户界面,但它的缺点是它不再是纯 Java。

当我搜索与 Swing 相关的库时,我发现的很多东西都是 5 年或更早的,尽管从那时起桌面应用程序的美学已经有了很大的发展。

如果您需要从头开始构建 Java 桌面应用程序,您会使用什么来构建它的 GUI?

4

10 回答 10

30

我还可以为您提供一个新的 LaF 来研究 - WebLaF。我目前正在努力为它带来许多 UI 功能,并通过使用 WebLaF 库的基本功能使任何人都可以更轻松地使用 Swing。

一些示例展示了一些 WebLaF 组件的外观: 一些 WebLaF 组件

我瞄准的一些主要目标:

  1. 外观精美且外观现代的 L&F,支持所有 Swing 组件
  2. 在标准 Swing 中找不到的大量附加组件
  3. 大量实用程序类来帮助您编写代码

WebLaF 库还提出了其他一些优点和独特的功能:

  1. 它是一个开源项目(GPLv3 许可)
  2. 使用 Painters 系统轻松设计组件(特别是 9 个补丁文件)
  3. 快速轻松地自定义默认“Web”样式
  4. 许多功能可加速和简化 Swing 应用程序界面的创建

您可以尝试演示应用程序,看看它是否足够现代和简单:)

于 2012-04-13T07:16:25.587 回答
10

你看过JavaFX 2.0吗?它旨在与 Swing 轻松互操作,并具有许多现代的“好看”控件。

此外,正如 lrAndroid 所提到的,如果您使用以下方式设置系统外观和感觉,则 Swing 应用程序可以看起来像本机应用程序:

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
于 2012-04-13T02:56:20.257 回答
9

研究改变 Java 程序的外观。这允许您自定义程序的整体“主题”。 是有关更改 LAF 的信息。

于 2012-04-13T02:48:41.123 回答
6

现代 Javascript 框架(ExtJS、Dojo 等)提供相同或更多的小部件丰富性(例如 Excel 之类的网格)、更广泛的 L&F,并且通常更适合用户的操作系统。用户对他们的浏览器也很满意,嘿,“现代的东西”在网络上,而今天的现代网络是 HTML+Javascript。

将应用程序转换为“类似网络”的开销很小。嵌入式 Jetty 可以保持非常小,并且磁盘空间已不再是问题。

对于应用程序的未来发展,沿着这条路线还有其他好处。

  • 突然,桌面应用程序变成了服务器应用程序,可以从另一个桌面访问。我们能够在几周内将桌面应用程序推广到“门户”。
  • 根据(Ajax)Web 服务重写应用程序可以轻松过渡到创建完整的 REST(或 SOAP...)服务堆栈。然后可以将该应用程序集成到其他应用程序中,轻松地进行外部监控等......
  • 仅专注于 UI 层,对其他设备(智能手机、平板电脑等)的支持变得更加容易
  • 随着应用程序的增长,关注点分离更加清晰;开发 UI 的开发人员不必处理低级代码。
  • 有很多优秀的 JS/HTML 设计人员和开发人员不使用 Java 编程。

编辑

3 年后,多亏了Electron,这变得非常容易

于 2012-04-13T08:22:05.917 回答
4

尝试其中之一:

  1. 纹身
  2. JGoodies
  3. 夸夸
于 2012-04-13T09:00:40.787 回答
2

Nimbus 的外观和感觉如何?Oracle Link 也看看SO-Question

于 2012-04-13T08:56:09.803 回答
2

我知道这个问题很老,但如果你不想使用 FX 并且仍然想使用 Swing,那么试试MacWidgets,我已经在几个项目中使用过它。它很轻,看起来很棒。下面是我正在做的一个旧项目,随着时间的推移,我已经完善了使用 macwidgets,现在在我的公司内部使用它。

http://www.digitalhand.net/projects/jdataanalyzer/mainGUI.png

于 2014-08-15T22:03:57.777 回答
1

QT 相当广泛,但也非常庞大(臃肿)和复杂。例如,还有开放式办公室使用的 SWT 库。SWT 对按钮、表格等使用本地 UI 小部件,而 Swing 模拟它们。

然而,趋势显然是使用 HTML 和 Javascript 为浏览器编写富客户端应用程序。在过去的几年里,这两者都取得了巨大的进步。

HTML5 专门针对具有更好的表单和本地数据库等功能的富客户端应用程序,以支持断开连接的场景(请注意,最后一个功能尚未标准化,但已由所有最新浏览器实现)。

Javascript 现在拥有强大的库,其中包含 jQuery 及其许多插件。甚至还有像 Coffeescript 这样的语言可以用来生成语法更简单、更强大的 Javascript。

此类应用程序也无需连接到外部服务器。可以在客户端上安装小型本地服务器(例如:jetty、node.js、...)和数据库(SQLite、H2、...),以构建一个完全独立的应用程序。

于 2012-04-13T03:05:55.637 回答
1

我对FlatLaf有很好的体验。

它易于安装,跨平台,没有外部依赖,它是开源的(Apache 许可证),它包括暗模式和大量主题

光

黑暗的

添加后:

UIManager.setLookAndFeel( new FlatLightLaf() );

您的应用程序看起来像是在过去十年中编写的,而不是在上个千年中编写的。

它还有一个高对比度主题,可访问性。

于 2021-07-12T16:04:45.130 回答
0

Swing 很好(稳定,有文档,支持到 2026 年)。问题是它依赖于提供非常有限数量的样板选择的 LookAndFeel 系统。单独更改每个组件的外观应该很容易,然后释放其创造力。不幸的是,这很痛苦。恕我直言,框架应该建立在 Swing 之上,而不是创建 JavaFX。

看看https://github.com/dotxyteam/ReflectionUI

前 GUI:http: //javacollection.net/reflectionui/wp-content/uploads/2017/08/general.png

于 2018-11-06T17:44:42.833 回答