Heim > Java > javaLernprogramm > Wie kann ich das Erscheinungsbild eines JTabbedPane dynamisch aktualisieren, nachdem ich neue Tabs in Swing hinzugefügt habe?

Wie kann ich das Erscheinungsbild eines JTabbedPane dynamisch aktualisieren, nachdem ich neue Tabs in Swing hinzugefügt habe?

Susan Sarandon
Freigeben: 2024-12-03 13:19:10
Original
846 Leute haben es durchsucht

How Can I Dynamically Update a JTabbedPane's Look and Feel After Adding New Tabs in Swing?

JTabbedPane-Look and Feel effektiv aktualisieren

In Swing-Anwendungen ermöglicht JTabbedPane die Erstellung von Registerkartenfenstern. Manchmal besteht die Notwendigkeit, das Erscheinungsbild (L&F) der Anwendung dynamisch zu ändern. Dadurch wird das JTabbedPane jedoch möglicherweise nicht immer wie erwartet aktualisiert.

Problem:Nach dem Hinzufügen einer neuen Registerkarte in JTabbedPane wird die Änderung von L&F nicht in der neuen Registerkarte widergespiegelt.

Lösung: Um dieses Problem zu beheben, beachten Sie Folgendes Ansatz:

import javax.swing.*;
import javax.swing.UIManager.LookAndFeelInfo;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class JTabbedPaneLookAndFeelUpdate {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

            JTabbedPane tabbedPane = new JTabbedPane();
            tabbedPane.addTab("Tab 1", new JPanel());

            frame.add(createToolbar(tabbedPane), BorderLayout.NORTH);
            frame.add(tabbedPane, BorderLayout.CENTER);

            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
        });
    }

    private static JToolBar createToolbar(JTabbedPane tabbedPane) {
        List<LookAndFeelInfo> availableLooks = new ArrayList<>(Arrays.asList(UIManager.getInstalledLookAndFeels()));
        JComboBox<LookAndFeelInfo> lookAndFeelComboBox = new JComboBox<>(availableLooks.toArray(new LookAndFeelInfo[0]));
        lookAndFeelComboBox.addActionListener(e -> {
            try {
                LookAndFeelInfo selectedLookAndFeel = (LookAndFeelInfo) e.getSource();
                UIManager.setLookAndFeel(selectedLookAndFeel.getClassName());
                SwingUtilities.updateComponentTreeUI(tabbedPane);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        });

        JToolBar toolbar = new JToolBar();
        toolbar.add(new JLabel("Look and Feel:"));
        toolbar.add(lookAndFeelComboBox);
        return toolbar;
    }
}
Nach dem Login kopieren

Erklärung:

  • Eine JToolBar wird erstellt, die ein Dropdown-Menü zur Auswahl verschiedener L&Fs bietet.
  • Wenn ein L&F ausgewählt ist, wird sein Klassenname als L&F der Benutzeroberfläche festgelegt.
  • Die Der Befehl SwingUtilities.updateComponentTreeUI(tabbedPane) löst die Aktualisierung des L&F für die spezifische JTabbedPane-Instanz (tabbedPane) aus.

Diese Lösung ermöglicht dynamische L&F-Änderungen und stellt sicher, dass das JTabbedPane zusammen mit der neu hinzugefügten Registerkarte , spiegelt das ausgewählte L&F wider.

Das obige ist der detaillierte Inhalt vonWie kann ich das Erscheinungsbild eines JTabbedPane dynamisch aktualisieren, nachdem ich neue Tabs in Swing hinzugefügt habe?. 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