Mengemas kini Rupa dan Rasa JTabbedPane dengan Berkesan
Dalam aplikasi Swing, JTabbedPane membenarkan penciptaan anak tetingkap tab. Kadangkala, keperluan timbul untuk menukar rupa dan rasa (L&F) aplikasi secara dinamik. Walau bagaimanapun, berbuat demikian mungkin tidak sentiasa mengemas kini JTabbedPane seperti yang dijangkakan.
Isu: Selepas menambah tab baharu dalam JTabbedPane, menukar L&F tidak ditunjukkan dalam tab baharu.
Penyelesaian: Untuk menangani isu ini, pertimbangkan perkara berikut pendekatan:
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; } }
Penjelasan:
Penyelesaian ini membenarkan perubahan L&F dinamik, memastikan JTabbedPane, bersama-sama dengan tab yang baru ditambah , mencerminkan L&F yang dipilih.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengemas kini Rupa dan Rasa JTabbedPane Secara Dinamik Selepas Menambah Tab Baharu dalam Swing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!