如何创建“现代化”的Java桌面应用程序?

时间:2012-04-13 02:29:56

标签: java swing user-interface look-and-feel swingx

定期询问与此类似的问题,但其中许多答案都已过时。

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

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

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

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

如果您需要从头开始构建Java桌面应用程序,那么它将用于GUI吗?

10 个答案:

答案 0 :(得分:31)

我还可以为你提供一个新的LaF来研究 - WebLaF。我目前正致力于通过使用WebLaF库基本功能,带来许多UI功能,并使Swing的工作变得更加容易。

一些示例显示了一些WebLaF组件的外观: Some of WebLaF components

我定位的一些主要目标:

  1. 优秀而现代的L& F,支持所有Swing组件
  2. 您在标准Swing中找不到的一组广泛的附加组件
  3. 一大堆用于帮助您编写代码的Utility类
  4. WebLaF库还提出了一些其他优点和独特功能:

    1. 这是一个开源项目(GPLv3许可)
    2. 使用画家系统轻松组件样式(特别是9个补丁文件)
    3. 快速轻松地自定义默认的“Web”样式
    4. 许多加速和简化Swing应用程序界面创建的功能
    5. 您可以尝试使用demo-app来查看它是否足够现代和简单:)

答案 1 :(得分:9)

了解如何更改Java程序的外观。这允许您自定义程序的整体“主题”。 Here是关于改变LAF的信息。

答案 2 :(得分:9)

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

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

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

答案 3 :(得分:6)

现代Javascript框架(ExtJS,Dojo等...)提供相同的小部件丰富度或更多(例如像网格一样的Excel),更广泛的L& F并且通常更适合用户的操作系统。 用户也非常熟悉他们的浏览器,嘿,“现代的东西”在网络上,今天的现代网络是HTML + Javascript。

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

此路线还有其他优势可用于未来的应用演变。

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

修改

3年后,由于Electron

,这变得非常容易

答案 4 :(得分:4)

尝试以下方法之一:

  1. JTattoo
  2. JGoodies
  3. Quaqua

答案 5 :(得分:2)

Nimbus的外观和感觉怎么样? Oracle Link 另请查看SO-Question

答案 6 :(得分:2)

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

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

答案 7 :(得分:1)

QT相当广泛,但也非常庞大(臃肿)和复杂。例如,开放式办公室也使用SWT库。 SWT使用本机UI小部件作为按钮,表格等,其中Swing模拟它们。

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

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

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

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

答案 8 :(得分:0)

摆动良好(稳定,有记录并在2026年之前得到支持)。问题在于它依赖于LookAndFeel系统,该系统提供了非常有限的样板选择。应该容易地单独更改每个组件的外观,然后释放其创造力。不幸的是,这很痛苦。应该在Swing之上构建IMHO框架,以使其成为可能,而不是创建JavaFX。

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

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

答案 9 :(得分:0)

我对 FlatLaf 的体验很好。

它易于安装、跨平台、没有外部依赖项、它是开源的(Apache 许可)、它包括黑暗模式并且有大量的 themes

light

dark

添加后:

UIManager.setLookAndFeel( new FlatLightLaf() );

您的应用看起来像是在过去十年中编写的,而不是在前一千年编写的。

它还有一个高对比度主题,用于辅助功能。