gpt4 book ai didi

java - 尝试使用 GTKLookAndFeel 在 JavaFX 中设置 SwingNode 的样式会卡住应用程序

转载 作者:IT老高 更新时间:2023-10-28 20:35:30 26 4
gpt4 key购买 nike

我们有一个使用 Swing 的 Java 应用程序,但我们正在将其迁移到 JavaFX。因此,我们将旧的 Swing 代码包装到 SwingNode 中,并逐步替换它们。

在迁移之前,Swing 应用程序使用 com.sun.java.swing.plaf.gtk.GTKLookAndFeel 作为外观(Ubuntu 上的默认设置)。我们使用以下代码来设置它(如果可用):

for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if (info.getClassName().equals("com.sun.java.swing.plaf.gtk.GTKLookAndFeel")) {
UIManager.setLookAndFeel(info.getClassName());
}
}

这很好用。然而,在切换到 JavaFX 之后,对 UIManager.setLookAndFeel() 的调用会卡住应用程序,并且没有任何反应。需要手动设置外观,因为我们仍希望基于 GTKLookAndFeel 为尚未迁移到 JavaFX 的 Swing 组件设置样式。

更多信息:这仅不适用于 com.sun.java.swing.plaf.gtk.GTKLookAndFeel,因为它在使用 javax.swing.plaf 时有效。 metal.MetalLookAndFeeljavax.swing.plaf.nimbus.NimbusLookAndFeelcom.sun.java.swing.plaf.motif.MotifLookAndFeel

我们可以做些什么来让它与 GTKLookAndFeel 一起在 SwingNodes 中为我们的 Swing 组件设置样式?

最佳答案

GUI 组件需要更新到 gui 线程中。

尝试以下方法之一:

SwingUtilities.invokeLater(() -> {
//commands
});

javafx.application.Platform.runLater(() -> {
//commands
});

关于java - 尝试使用 GTKLookAndFeel 在 JavaFX 中设置 SwingNode 的样式会卡住应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43787113/

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