ホームページ >Java >&#&チュートリアル >UIManager を変更した後、Swing JTabbedPane のルック アンド フィールが更新されないのはなぜですか?

UIManager を変更した後、Swing JTabbedPane のルック アンド フィールが更新されないのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-30 16:36:11305ブラウズ

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

Swing JTabbedPane でルック アンド フィールが更新されない

メニューを使用して Java Swing アプリケーションのルック アンド フィールを変更すると、新しく追加されたアプリケーションに変更が反映されない場合があります。 JTabbedPane。 SwingUtilities.updateComponentTreeUI() を利用しているにもかかわらず、問題は解決しません。

解決策には、フレーム内の JTabPanes を含むフレーム全体の UI を更新することが含まれます。

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

この概念を拡張することで、より堅牢な実装を実現できます。 JTabPanes を含む Swing アプリケーションのルック アンド フィールを動的に更新する例を次に示します。

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 を含むアプリケーションのすべての部分に確実に反映されます。一貫したユーザー エクスペリエンスを提供します。

以上がUIManager を変更した後、Swing JTabbedPane のルック アンド フィールが更新されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。