是否有基于扁平化设计理念的 java 外观? [复制]

Posted

技术标签:

【中文标题】是否有基于扁平化设计理念的 java 外观? [复制]【英文标题】:Is there a java look and feel based on the flat design concept? [duplicate] 【发布时间】:2014-11-09 10:58:37 【问题描述】:

我有 5 个用于工程的 Java 系统,其 UI 是使用 Swing 开发的。

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

这些系统的 UI 困扰我们的一个问题是,与手机、平板电脑和网站的大型可用 UI 相比,它们看起来很旧。

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

因此,我们正在开始一项研究,以寻找低成本的替代方案,以使我们的系统具有面向扁平化设计的现代外观。

我们想到的第一个选项是搜索基于平面设计概念实现的 java L&F。但是我们没有找到。

有谁知道是否有基于平面设计概念的 Java 外观和感觉?

最好的问候, 克劳迪奥。

【问题讨论】:

Swing L&F 可以改变颜色、边框和间距,甚至是一些渲染.. 但实际上创建现代 UI 的唯一方法是抛弃“传统”/Swing UI 并重新开始: 如果 只是 寻​​找不同的 L&F,请参阅 ***.com/questions/3954616/java-look-and-feel-lf - 也许其中一个是合适的(或者可以修改以使其合适)。如果不是......可能不得不重新考虑“低成本”或让用户界面感觉 iModern。 只想提一下,仅仅改变外观可能无法完全解决您的问题。如果您有许多使用绝对布局的表单(在旧的业务应用程序中经常出现这种情况),您可能必须更改它们,因为文本框和内容会变得更大或更小。因此,如果您的应用程序中有许多表单,请记住这一点。 @Cláudio Swing 没有死。 Java 没有死。 JavaFX 只是另一个利用 JVM 的运行时/框架。然而,放弃 Swing 并使用不同的 UI 框架,不管它是什么,这是一个不平凡的转换(阅读:“高成本”)。 “重复”问题链接一次没有提到平面设计。另一个对 SO 过度热心编辑的案例。 【参考方案1】:

让旧的 Swing 应用焕然一新的一种快速方法是更改​​其外观。

Nimbus 的外观和感觉看起来不错

查看 Oracle Tutorial on Look and Feel 了解如何更改或创建自己的。

要更改外观和感觉,您只需在应用中添加几行代码即可。

以下是更改为 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.

【讨论】:

dkatzel,Nimbus 与扁平化设计理念不兼容。 :-|【参考方案2】:

没有预先构建的,Swing 中的 UI 是……嗯……是我在开发中经历过的最痛苦的经历之一。 UI 本质上是特定于平台的,以至于跨平台 UI 是任何半复杂 UI 的梦想。它唯一起作用的地方是,如果您的 UI 基本上是一个菜单栏和一个您可以在其上绘制自己的 UI 的表面。

也就是说,我认为从长远来看,您可能会在某种程度上研究自定义 UI 和小部件的工作,虽然这将是很多自定义 UI 工具的工作,但权衡是至少您可以控制 UI从那时起,您可以随时更新它,并且您不必担心 Java 认为什么是好的 UI 设计。

一些可能的选择,其中没有一个不会没有重大痛苦:

    选择one of the two built-in L&F options, or set it to be the platform default(您的应用程序看起来像原生平台),但您必须在每个平台上分别调试应用程序以确保用户界面始终如一地工作。至少在使用此选项时,如果您将其设置为使用平台默认值,则该应用在任何操作系统上看起来都类似于原生应用。 Look into SWT - 从长远来看可能不值得 - 我认为你只是在用一组不太理想的情况换另一种情况,但至少了解你的选择是件好事。 Style the L&F with CSS - 我自己从未尝试过 - 但也许值得一看。但就个人而言,如果可以避免的话,我会避免花费任何更多时间将您的应用程序绑定到 Swing。正如您所见,这只是其中一种糟糕的桌面体验。 以 Web 应用程序的形式交付您的应用程序,我确信这是一次重大的重新架构设计,只需让用户通过浏览器访问它。我意识到这可能是“核选项”,而且完全不现实,但只是把它扔在那里。 接受它,让您的应用继续看起来像垃圾。世界上还有更糟糕的命运。

【讨论】:

简洁实用的分析,@jefflunt!我们实际上做了选项 1(平台默认)。我认为我们必须开始准备迁移到选项 3(Java 8 中的 JavaFX 和 CSS)。问题是我们的客户在生产环境中更新 Java 的政策有延迟。 在我阅读了所有答案之后,我得出的结论是,还没有基于平面设计概念的 L&F... @Cláudio 根据您的要求,我相信您迟早会迁移(已迁移?)到 JavaFX... @FranklinYu 我们的赌注是 Web 开发(html、css、bootstrap 和 angular)。 @Cláudio 所以你选择了“核选项”??

以上是关于是否有基于扁平化设计理念的 java 外观? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

设计模式系列 - 外观模式

对扁平化设计理念的认识与思考

设计模式——介绍与工厂模式(扁平管理模式VS职业经理人模式)

java设计模式-外观模式

基于v3s的语音助手 (外观设计)即将开源

基于java的拼图游戏的设计与实现