gpt4 book ai didi

java - 如何同步 JavaFx 和 Swing 外观

转载 作者:行者123 更新时间:2023-11-30 10:45:15 25 4
gpt4 key购买 nike

我有 JavaFx 应用程序,其中嵌入了 swing 组件。 JavaFx 和 Swing 组件的外观不同。所以我正在寻找可以解决这个问题并提供通用外观的解决方案,以便应用程序看起来更专业并被用户接受。

非常感谢任何帮助。

最佳答案

两个选项,目前 IMO 都没有真正好的通用解决方案:

1。匹配系统外观

在 Swing 集合中 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())使 Swing 使用系统的外观和感觉。

默认情况下,JavaFX 不匹配系统外观,并且不了解 Swing UIManager。 JavaFX 拥有自己的内置跨平台外观 (Modena in Java 8 and Caspian in Java 7)。你可以override the default具有自定义外观的平台外观,有些人甚至为 JavaFX 创建了一些系统外观,例如 AquaFX ,但是没有对可以运行 JavaFX 的所有系统的通用系统外观支持。

您可以检查您希望支持的平台,看看是否可以找到将 JavaFX 与这些平台的系统外观相匹配的第三方定义。我的猜测是,如果您想要跨各种平台的系统外观和感觉的高质量匹配,那么沿着这条路您将无法获得令人满意的解决方案。

2。将您的 JavaFX UI 与跨平台的 Swing 外观相匹配

这需要为您的应用程序选择一个跨平台的 Swing 外观,然后为您的 JavaFX 应用程序定义一个用户代理样式表,使 JavaFX 小部件外观与 Swing 小部件外观相匹配。基于 JavaFX CSS 的样式非常灵活。通过一些工作,您可以模拟许多窗口工具包的外观(如此 button styling sample 所示)。因此,您当然可以构建一些东西来匹配一些常见的 Swing 外观。

但是,我从未见过有人尝试这样做,对于大量的小部件来说,所需的工作将是非常重要的,并且您最终可能会使您的应用程序整体看起来更糟以匹配您的 Swing 界面如果您改为花费精力使 JavaFX 部分和 Swing 部分看起来更好,或者只是使用默认的 JavaFX 查找 JavaFX 部分,而使用 Swing 查找 Swing 部分。


所以,实际上,您只剩下第三种选择,这是最现实的 IMO:接受应用程序的 Swing 部分和应用程序的 JavaFX 部分看起来会有些不同。如果这对您的应用程序来说是 Not Acceptable 妥协,请将您的应用程序转换为使用单个工具包(Swing 或 JavaFX)来呈现 UI 控件。

关于java - 如何同步 JavaFx 和 Swing 外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37103316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com