我如何才能创建一个;“现代风格”;Java桌面应用程序?

我如何才能创建一个;“现代风格”;Java桌面应用程序?,java,swing,user-interface,look-and-feel,swingx,Java,Swing,User Interface,Look And Feel,Swingx,类似的问题也会定期提出,但其中许多答案都过时了 我需要用Java构建一个跨平台的桌面应用程序,其GUI质量与当代桌面应用程序相当 Swing是默认的选择,但我还没有遇到过一个Swing应用程序,它看起来至少不太过时和笨重(我知道这是主观的,但使用GUI很难避免审美判断) 我注意到,新的比特币客户端现在使用带有Java绑定的QT,并且确实有一个吸引人的用户界面,但这有一个缺点,即它不再是纯Java 我在搜索Swing相关库时发现的大部分内容都是5年或更久的,尽管桌面应用程序的美学从那时起已经有了很

类似的问题也会定期提出,但其中许多答案都过时了

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

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

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

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


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

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

您有没有研究过?它被设计成可以轻松地与Swing进行互操作,并且有许多现代的“好看”控件

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

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

QT相当广泛,但也非常大(肿胀)和复杂。例如,OpenOffice也使用SWT库。SWT对按钮、表格等使用本机UI小部件,而Swing则模拟这些小部件

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

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

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


这类应用程序也不需要连接到外部服务器。客户机上可以安装小型本地服务器(例如:jetty、node.js等)和数据库(SQLite、H2等),以形成一个完全独立的应用程序。

我还可以为您提供一个新的LaF来查看-。我目前正在开发它,通过使用WebLaF库的基本功能,为任何人带来许多UI功能,并使Swing的使用变得更加容易

以下几个示例展示了一些WebLaF组件的外观:

我的一些主要目标是:

  • 出色的现代外观L&F,支持所有Swing组件
  • 在标准Swing中找不到的大量附加组件
  • 一大组实用程序类来帮助您编写代码
  • WebLaF库还提供了一些其他优势和独特功能:

  • 这是一个开源项目(GPLv3许可)
  • 使用painters系统(特别是9-patch文件)轻松设置组件样式
  • 快速方便地自定义默认“Web”样式
  • 有很多特性可以加速和简化Swing应用程序界面的创建

  • 您可以尝试查看它是否足够现代和简单:)

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

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

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

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


    3年后,由于

    Nimbus的外观和感觉如何,这变得非常简单? 另请看一下

    尝试下列方法之一:


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

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

    看一看


    Ex GUI:

    我认为这个问题不会继续存在,但是……这个问题在这里是不合适的,因为它需要讨论和意见。FAQ特别提到了讨论