首页 >Java >java教程 >为什么我的 Swing JTabbedPane 在更改 UIManager 后没有更新其外观?

为什么我的 Swing JTabbedPane 在更改 UIManager 后没有更新其外观?

Susan Sarandon
Susan Sarandon原创
2024-11-30 16:36:11263浏览

Why Doesn't My Swing JTabbedPane Update its Look and Feel After Changing the UIManager?

Swing JTabbedPane 中的外观和感觉未更新

使用菜单更改 Java Swing 应用程序的外观和感觉时,更改可能不会反映在新添加的菜单中JTabbedPane。尽管使用了 SwingUtilities.updateComponentTreeUI(),问题仍然存在。

解决方案涉及更新整个框架的 UI,包括其中的任何 JTabPanes:

Window windows[] = Frame.getWindows();
for(Window window : windows) {
    SwingUtilities.updateComponentTreeUI(window);
}

通过扩展此概念,可以实现更稳健的实施。下面是一个动态更新 Swing 应用程序外观和风格的示例,包括任何 JTabPanes:

public class JTabbedText {

    // ... (code omitted for brevity)

    private static JToolBar createToolBar(final Component parent) {
        // ... (code omitted for brevity)

        combo.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                int index = combo.getSelectedIndex();
                try {
                    UIManager.setLookAndFeel(
                        available[index].getClassName());

                    // Update the UI of all windows
                    Window[] windows = Window.getWindows();
                    for (Window window : windows) {
                        SwingUtilities.updateComponentTreeUI(window);
                    }
                } catch (Exception e) {
                    e.printStackTrace(System.err);
                }
            }
        });

        // ... (code omitted for brevity)
    }

    // ... (code omitted for brevity)
}

此方法可确保对外观和风格的更改将传播到应用程序的所有部分,包括 JTabPanes,提供一致的用户体验。

以上是为什么我的 Swing JTabbedPane 在更改 UIManager 后没有更新其外观?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn