基于扁平化设计理念的Java外观是存在的吗?

12

我有5个使用Swing开发的工程Java系统。

我们大约10年前开始开发这些系统,每个系统有约30万行代码。所有这些系统都在生产环境中。

关于这些系统的用户界面,我们存在一个问题,他们看起来很旧,与智能手机、平板电脑和网站的界面相比较而言。

智能手机、平板电脑和网站UI共同具备什么?它们的外观都基于扁平化设计理念。

因此,我们正在开展研究,寻找低成本的替代方案,以便为我们的系统提供面向扁平化设计的现代化外观。

我们想到的第一种选择是搜索一个基于扁平化设计理念实现的Java L&F,但我们没有找到。

是否有人知道是否有基于扁平化设计理念的Java外观和感觉?

最好的问候, Cláudio。


3
Swing L&F可以改变颜色、边框、间距甚至一些渲染效果,但要创建现代化的用户界面,真正的方法是放弃传统的Swing UI并重新开始:< 而“重新开始”并不是一种“低成本”的策略。 - user2864740
@user2864740,我认为JavaFX已经取代了Java/Swing,我不确定是否能找到一个适合我的问题的L&F... - Cláudio
1
@Cláudio Swing并没有死。Java也没有死。JavaFX只是另一个利用JVM的运行时/框架。然而,放弃Swing并使用不同的UI框架是一项非常复杂的转换(即“高成本”)。无论使用哪种框架,都需要付出很高的代价。 - user2864740
还要考虑让用户选择首选的 L&F,如此处所建议:http://stackoverflow.com/a/25728130/230513。 - trashgod
3
“重复”问题链接没有提到扁平设计。又是 Stack Overflow 过度编辑的另一个案例。 - user1561108
显示剩余6条评论
2个回答

7

目前没有预先构建的UI,而且Swing中的UI是...嗯...我曾经开发过的最痛苦的体验之一。UI在本质上是特定于平台的,因此跨平台UI对于任何半复杂的UI都是一个空想。唯一能够奏效的地方就是如果您的UI基本上只是一个菜单栏和一个表面,您可以在其上绘制自己的UI。

话虽如此,从长远来看,您可能会在某个层次上考虑自定义UI和小部件工作,尽管这将需要大量的自定义UI工具工作,但这样做的权衡是,至少您将从那时起控制UI,可以随着时间的推移保持更新,并且您不必过多地担心Java决定的良好UI设计。

以下是一些可能的选项,但没有一个选项是没有重大困难的:

  1. 选择两个内置的L&F选项之一,或将其设置为平台默认值(你的应用程序看起来像本地平台),尽管你将不得不在每个平台上单独调试应用程序,以确保 UI 保持一致。至少使用此选项,如果将其设置为使用平台默认值,则无论在哪个操作系统上,该应用程序看起来都与本机应用程序相似。
  2. 研究 SWT - 可能长期来看不值得 - 我认为你只是在交换一组不太理想的情况,但了解你的选择是好的。
  3. 用 CSS 设计 L&F - 我自己从未尝试过这个 - 但也许值得一看。但就个人而言,如果可以避免,我会避免进一步投资于将你的应用程序绑定到 Swing。正如你所见,这只是一种可怕的桌面体验之一。
  4. 将你的应用程序作为 Web 应用程序交付,我相信这是一个重大的重新架构,并且只需用户通过浏览器访问它即可。我意识到这可能是“核选项”,完全不现实,但只是提出来。
  5. 忍受你的应用程序继续看起来很糟糕。世界上还有更糟糕的命运。

一个简明实用的分析,@jefflunt!我们实际上采用了选项1(平台默认设置)。我认为我们必须开始准备迁移到选项3(JavaFX和Java 8中的CSS)。问题是我们的客户在生产环境中更新Java的政策有所延迟。 - Cláudio
2
在阅读了所有答案之后,我得出结论:目前还没有基于扁平设计概念的L&F。 - Cláudio
@Cláudio 根据你的需求,我相信你迟早会迁移到 JavaFX... - Franklin Yu
@FranklinYu 我们的赌注在于网页开发(html、css、bootstrap和angular)。 - Cláudio
@Cláudio,你选择了“核选项”吗? - Franklin Yu
显示剩余3条评论

4
一种让旧的Swing应用程序焕然一新的快速方法是改变其外观和感觉。
Nimbus外观看起来还不错enter image description here 查看Oracle的外观和感觉教程,学习如何更改或创建自己的外观和感觉。
要更改您的外观和感觉,您只需向应用程序添加几行代码即可。
以下是如何更改为Nimbus:
try {
    //recommended way to set Nimbus LaF because old versions of Java 6
    //don't have it included
    for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
       if ("Nimbus".equals(info.getName())) {
           UIManager.setLookAndFeel(info.getClassName());
           break;
        }
    }
} catch (Exception e) {
    // If Nimbus is not available, you can set the GUI to another look and feel.
}

9
dkatzel,Nimbus不符合扁平化设计概念。 :-| - Cláudio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接