Heim > Java > javaLernprogramm > Warum aktualisiert mein Swing JTabbedPane sein Erscheinungsbild nicht, nachdem der UIManager geändert wurde?

Warum aktualisiert mein Swing JTabbedPane sein Erscheinungsbild nicht, nachdem der UIManager geändert wurde?

Susan Sarandon
Freigeben: 2024-11-30 16:36:11
Original
306 Leute haben es durchsucht

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

Look and Feel wird in Swing JTabbedPane nicht aktualisiert

Wenn Sie das Look and Feel einer Java Swing-Anwendung über ein Menü ändern, werden Änderungen möglicherweise nicht in einer neu hinzugefügten Anwendung widergespiegelt JTabbedPane. Trotz der Verwendung von SwingUtilities.updateComponentTreeUI() besteht das Problem weiterhin.

Die Lösung besteht darin, die Benutzeroberfläche des gesamten Frames zu aktualisieren, einschließlich aller darin enthaltenen JTabPanes:

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

Durch die Erweiterung dieses Konzepts wird a Eine robustere Implementierung kann erreicht werden. Hier ist ein Beispiel, das das Erscheinungsbild einer Swing-Anwendung, einschließlich aller JTabPanes, dynamisch aktualisiert:

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)
}
Nach dem Login kopieren

Dieser Ansatz stellt sicher, dass Änderungen am Erscheinungsbild auf alle Teile der Anwendung, einschließlich JTabPanes, übertragen werden. Bereitstellung einer konsistenten Benutzererfahrung.

Das obige ist der detaillierte Inhalt vonWarum aktualisiert mein Swing JTabbedPane sein Erscheinungsbild nicht, nachdem der UIManager geändert wurde?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage