使用菜单更改 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中文网其他相关文章!