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

san*_*ity 47 java user-interface swing swingx look-and-feel

定期询问类似的问题,但其中许多答案已经过时.

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

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

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

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

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

Mik*_*rin 31

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

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

我定位的一些主要目标:

  1. 优秀而现代的L&F,支持所有Swing组件
  2. 标准Swing中没有的大量附加组件
  3. 一组大量的实用程序类,可以帮助您编写代码

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

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

您可以尝试使用demo-app来查看它是否足够现代和简单:)


Eri*_*nil 11

我在FlatLaf上有过很好的体验。

它易于安装、跨平台、没有外部依赖、开源(Apache 许可证)、包含深色模式并且有大量主题

光

黑暗的

添加后:

UIManager.setLookAndFeel( new FlatLightLaf() );
Run Code Online (Sandbox Code Playgroud)

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

它还具有一个高对比度主题,以方便使用。

  • 谢谢你的提示。FlatLaf 看起来非常有说服力。 (2认同)

lrA*_*oid 9

考虑更改Java程序的外观.这允许您自定义程序的整体"主题". 以下是有关更改LAF的信息.


Bri*_*128 9

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

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

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
Run Code Online (Sandbox Code Playgroud)


Bru*_*der 6

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

将应用程序转换为"web like"的开销很小.嵌入式Jetty可以保持非常小,磁盘空间不再是问题.

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

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

编辑

3年后,凭借Electron,这变得非常容易

  • 使用Java 6+`Deskage.getDesktop().browse(new URI(uriString));` (2认同)