我如何创build一个“现代化”的Java桌面应用程序?
对此类似的问题也会定期提出,但其中许多答案已经过时。
我需要用Java构build一个跨平台的桌面应用程序,其GUI与当代桌面应用程序的质量相当。
Swing是默认的select,但是我还没有遇到一个Swing应用程序,至less看起来相当过时和笨拙(主观的,我知道,但是用GUI很难避免审美判断)。
我注意到,新的比特币客户端现在使用QT和Java绑定,并且具有吸引人的用户界面,但是这具有不再是纯Java的缺点。
当我searchSwing相关的图书馆的时候,发现了5年或更长的时间,尽pipe桌面应用程序的美学自那时以来已经有了显着的发展。
如果您需要从头开始构buildJava桌面应用程序,您将使用什么GUI?
研究改变Java程序的外观。 这使您可以自定义程序的整体“主题”。 这是关于改变LAF的信息。
我也可以为您提供一个新的LaF来研究 – WebLaF 。 我目前正在开发这个工具,通过使用WebLaF库的基本function,为用户带来大量的UIfunction,让Swing的工作变得更容易。
下面是一些示例,展示了一些WebLaF组件的外观:
我所瞄准的一些主要目标是:
- 伟大而现代的L&F支持所有Swing组件
- 标准的Swing中不会find大量附加组件
- 一大套实用工具类来帮助您编写代码
WebLaF库还提出了一些其他的优点和独特的function:
- 这是一个开源项目(GPLv3许可)
- 使用画家系统(特别是9个补丁文件)
- 快速和轻松地定制默认的“Web”风格
- 许多function可以加速和简化Swing应用程序界面的创build
您可以尝试演示应用程序 ,看看它是现代和简单的:)
你看过JavaFX 2.0吗? 它旨在与Swing轻松互操作,并具有许多现代“好看”的控制。
另外,正如lrAndroid所提到的,如果你设置了系统外观,一个Swing应用可以看起来像一个本地应用:
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
现代的Javascript框架(ExtJS,Dojo等)提供了相同的小部件丰富性或更多(例如像网格一样的Excel),更多的L&F,并且通常更适合用户的操作系统。 用户也很喜欢浏览器,嘿,“现代的东西”在networking上,今天的现代networking是HTML + Javascript。
将应用程序转换为“网页”的开销很小。 embedded式docker可以保持非常小,磁盘空间已经成为一个问题。
这条路线对于应用程序的未来发展还有其他好处。
- 突然,桌面应用程序成为一个服务器应用程序,可以从另一台桌面访问。 在几周之内,我们就能够将桌面应用推广到“门户”。
- 用(Ajax)Web服务重新编写应用程序可以轻松转换为创build完整的REST(或SOAP …)服务堆栈。 该应用程序可以集成到其他应用程序,轻松地外部监控等…
- 其他设备(智能手机,平板电脑,…)的支持变得更容易,只集中在UI层
- 随着应用程序的增长,关注点分离更清晰。 在UI上工作的开发人员不必混淆低级代码。
- 有很多优秀的JS / HTMLdevise人员和开发人员不用Java编程。
编辑
3年后,由于Electron,这已经变得非常容易
尝试其中之一:
- JTattoo
- JGoodies数据
- Quaqua
那么Nimbus的外观和感觉呢? Oracle链接也看看SO问题
我知道这个问题是旧的,但如果你不想使用FX,并仍然想要使用Swing,那么试试MacWidgets ,我已经在一些项目中使用它。 这是非常轻,看起来不错。 以下是我正在研究的一个旧项目,随着时间的推移,我已经完善了使用macwidgets,现在在我的公司内部使用它。
http://www.digitalhand.net/projects/jdataanalyzer/mainGUI.png
QT是相当广泛的,但也很大(臃肿)和复杂。 例如,也有开放式办公室使用的SWT库。 SWT使用本地UI小部件来实现button,表格等Swing模拟它们的地方。
然而,趋势显然是用HTML和Javascript编写浏览器的富客户端应用程序。 这两年来都取得了长足的进步。
HTML5特别针对富客户端应用程序,具有更好的表单和本地数据库等function,以支持断开连接的情况(请注意,最后一个function尚未标准化,但由所有最新的浏览器实现)。
Javascript现在有强大的jQuery库及其插件。 甚至有像Coffeescript这样的语言,可以使用更简单和更强大的语法来生成Javascript。
也不需要这样的应用程序连接到外部服务器。 可以在客户端上安装足够小的本地服务器(例如:jetty,node.js,…)和数据库(SQLite,H2,…)来创build一个完全独立的应用程序。