类似的问题,这是定期询问,但很多这些答案都是过时的。
我需要建立在Java的跨平台桌面应用程序相媲美的高质量的当代桌面应用程序的GUI。
Swing是默认的选择,但我还没有遇到一个Swing应用程序,没有看,至少是,相当陈旧,笨重的(主观的,我知道,但图形用户界面是难以避免的审美判断)。
我注意到新的比特币客户端现在使用Qt与Java绑定,并且确实有吸引力的用户界面,但其缺点在于它是不再视为纯Java。
这么多的东西,我觉得当我搜索摇摆相关的库是5岁以上的老年人,即使桌面应用美学从那以后显著发展。
如果你需要从头开始构建Java桌面应用程序,你会怎样使用它的GUI?
考虑改变你的Java程序的外观和感觉。 这允许您自定义项目的整体“主题”。 下面是关于更改LAF信息。
我也可以为您提供一个新的LaF寻找到- WebLaF 。 我'目前正在它带来很多的UI功能,并通过只使用WebLaF库的基本功能,使与Swing工作的人要容易得多。
举几个例子说明如何某些WebLaF组件的样子:
一些主要目标我定位的是:
- 大和现代感的L&F为所有Swing组件支持
- 一套广泛的附加组件,你不会在标准的Swing找到
- 一个大集实用类来帮助你编写代码
WebLaF库还建议一些其他的优势和独特的功能:
- 它是一个开源项目(GPLv3的许可)
- 容易成份采用画家系统(特别是与9-补丁文件)造型
- 默认的“网页”风格的快速和易于定制
- 大量的功能,以加速和简化Swing应用程序界面的创建
您可以尝试的演示应用程序 ,看它是否是足够现代简约:)
你看着的JavaFX 2.0 ? 它被设计为与Swing轻松互操作,并有许多现代的“好看”的对照。
此外,作为lrAndroid提到,一个Swing应用程序可以看起来像一个本机应用程序,如果你设置系统的外观和感觉与:
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
现代JavaScript框架(ExtJS的,道场,等...)提供相同的部件丰富或更多(类似Excel的网格为例),更广泛的L&F的,通常与用户的操作系统更适合。 用户也非常舒适与他们的浏览器和,哎,“现代的东西”是在网络上,与现代网络今天是HTML +的Javascript。
一个应用程序转换为“网络状”的开销是最小的。 嵌入式码头可以保持非常小和磁盘空间已经变得不再是一个问题。
有下降的应用程序的未来演进这条路额外的好处。
- 突然,桌面应用成为服务器的应用程序,它可以从另一个桌面访问。 我们能够在顶级几周之内推动一个桌面应用程序,以“门户”。
- 在(阿贾克斯)Web服务方面重写应用程序提供了一个简单的过渡,以建立一个充分休息(或SOAP ...)服务堆栈。 然后,应用程序可以集成到其他应用程序,外部容易监测,等等。
- 其他设备(智能手机,平板电脑,...)的支持变得更加容易,通过浓缩UI层只
- 作为应用的增长,关注点分离是清洁器; 开发者在UI上的工作没有乱用低级代码。
- 有很多优秀的JS / HTML设计人员和开发人员没有在Java程序。
编辑
在3年后这已经成为非常容易由于电子
我知道这个问题是旧的,但如果你不想使用FX和仍想使用Swing,然后尝试MacWidgets ,我已经使用了一对夫妇的项目。 这是非常轻,而且看上去很不错。 下面是一个旧的项目我工作的,经过一段时间我一直在使用macwidgets完善,现在在我公司内部使用它。
http://www.digitalhand.net/projects/jdataanalyzer/mainGUI.png
QT是相当广泛的,但也是非常大的(臃肿)和复杂。 也有正在使用的开放式办公的实例的SWT库。 SWT使用原生UI组件的按钮,表格等在那里的秋千模仿他们。
然而,趋势明显向使用HTML和JavaScript在浏览器编写富客户端应用。 这两个已经在过去的几年中取得了巨大的进步。
HTML5专门针对与功能丰富的客户端应用程序,例如更好的形式和本地数据库支持离线场景(注意,这最后一项功能尚不规范,但它是由所有最新的浏览器实现)。
JavaScript有与jQuery和它的许多插件现在非常强大的库。 有喜欢的CoffeeScript甚至语言,可用于生产的Javascript更简单和更强大的语法。
但也没有必要这样的应用程序连接到外部服务器。 占地面积小地方的服务器(如:码头,node.js的,...)和数据库(SQLite的,H2,...),可以在客户端上安装要建立一个完全自包含的应用程序。
Swing是很好的(稳定,记录,支持,直到2026)。 问题是,它依赖的LookAndFeel系统提供的样板选项的数量非常有限的。 它应该很容易单独改变每个组件的外观,然后发挥其创造力。 不幸的是痛苦的。 恕我直言框架应建立在秋千之上,使之成为可能,而不是创建JavaFX的。
看看https://github.com/dotxyteam/ReflectionUI 。
防爆GUI: http://javacollection.net/reflectionui/wp-content/uploads/2017/08/general.png