Maison > Java > javaDidacticiel > Comment puis-je mettre à jour dynamiquement l'apparence d'un JTabbedPane après avoir ajouté de nouveaux onglets dans Swing ?

Comment puis-je mettre à jour dynamiquement l'apparence d'un JTabbedPane après avoir ajouté de nouveaux onglets dans Swing ?

Susan Sarandon
Libérer: 2024-12-03 13:19:10
original
846 Les gens l'ont consulté

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

Mise à jour efficace de l'apparence et de la convivialité de JTabbedPane

Dans les applications Swing, JTabbedPane permet la création de volets à onglets. Parfois, il est nécessaire de modifier dynamiquement l'apparence et la convivialité de l'application. Cependant, cela peut ne pas toujours mettre à jour le JTabbedPane comme prévu.

Problème : Après l'ajout d'un nouvel onglet dans JTabbedPane, la modification du L&F n'est pas reflétée dans le nouvel onglet.

Solution : Pour résoudre ce problème, considérez ce qui suit approche :

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;
    }
}
Copier après la connexion

Explication :

  • Une JToolBar est créée, proposant une liste déroulante pour sélectionner différents L&F.
  • Lorsqu'un L&F est sélectionné, son nom de classe est défini comme L&F de l'interface utilisateur.
  • Le La commande SwingUtilities.updateComponentTreeUI(tabbedPane) déclenche la mise à jour du L&F pour l'instance spécifique de JTabbedPane (tabbedPane).

Cette solution permet des modifications dynamiques de L&F, garantissant que le JTabbedPane, ainsi que l'onglet nouvellement ajouté , reflète le L&F sélectionné.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal