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; } }
Erklärung:
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!