java - 更新不同类别的 LAF

标签 java swing look-and-feel swingutilities

在我编写的“Battleship”程序中,我包含了将程序的“外观和感觉”更改为 SystemDefault、“Metal”(Java 默认)或“Motif”(也包含在 Java 中)的可能性。如果您从 JComboBox 中选择所需的 LAF(--> 更改预定义字符串 lookFeel)并按确认按钮,UIManager.setLookAndFeel(lookFeel) 被调用,并且 SwingUtilities.updateComponentTreeUI(this) 和方法 updateUI() 具有以下代码:

public static void updateUI() {
        //SwingUtilities.updateComponentTreeUI();
        SwingUtilities.updateComponentTreeUI(colorChooser);
        SwingUtilities.updateComponentTreeUI(shipChooser);
        SwingUtilities.updateComponentTreeUI(guide);
        SwingUtilities.updateComponentTreeUI(menu_bar);
        SwingUtilities.updateComponentTreeUI(menu_general);
        SwingUtilities.updateComponentTreeUI(menu_customization);
        SwingUtilities.updateComponentTreeUI(lafChooser);

        SwingUtilities.updateComponentTreeUI(LAN.lanframe);
        SwingUtilities.updateComponentTreeUI(LAN.hostframe);
        SwingUtilities.updateComponentTreeUI(LAN.joinframe);
    }

但是,此代码不会更新属于不同类的其他窗口。因此,如果我启动主程序,然后更改外观和感觉,这些窗口将不会受到影响。那些实际创建框架的类不是问题,但我的主程序只是扩展了 JFrame(我可能不会再这样做,但当我开始编写这个程序时,我对 Java 完全陌生)。 现在我的问题是:我怎样才能改变这个类(class)的LAF? 提前致谢!

最佳答案

如果getSupportsWindowDecorations()的结果对于给定的 LookAndFeeltrue ,您可以调用setWindowDecorationStyle()JRootPane 。引用了完整的例子hereUIManager 默认值中。

关于java - 更新不同类别的 LAF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35254563/

相关文章:

JavaFX 包含相同的 Controller 实例

java - "application blocked by security settings"阻止在 Linux mint 上的 firefox 上使用 oracle SE 7 update 51 运行小程序

java - Play框架文件上传无此类文件异常

java - 在java中每x秒更改一次焦点按钮

java - 自定义设计 JScollPane Java Swing

java - 设置文本背景颜色?

Java:防止项目作为重复项添加到 UI

java - 使用 AbstractTableModel 在 Jtable 中添加行

java - 在 Windows 8 中为 Java 应用程序提供 Metro 外观

java - 换肤 Java 桌面应用程序?