Home >Java >javaTutorial >How Can I Dynamically Update a JTabbedPane\'s Look and Feel After Adding New Tabs in Swing?
Updating JTabbedPane Look and Feel Effectively
In Swing applications, JTabbedPane allows for the creation of tabbed panes. Sometimes, the need arises to change the application's look and feel (L&F) dynamically. However, doing so may not always update the JTabbedPane as expected.
Issue: After adding a new tab in JTabbedPane, changing the L&F isn't reflected in the new tab.
Solution: To address this issue, consider the following approach:
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; } }
Explanation:
This solution allows for dynamic L&F changes, ensuring that the JTabbedPane, along with the newly added tab, reflects the selected L&F.
The above is the detailed content of How Can I Dynamically Update a JTabbedPane\'s Look and Feel After Adding New Tabs in Swing?. For more information, please follow other related articles on the PHP Chinese website!