首頁 > Java > java教程 > 在 Swing 中新增分頁後如何動態更新 JTabbedPane 的外觀?

在 Swing 中新增分頁後如何動態更新 JTabbedPane 的外觀?

Susan Sarandon
發布: 2024-12-03 13:19:10
原創
846 人瀏覽過

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

有效更新 JTabbedPane 外觀

在 Swing 應用程式中,JTabbedPane 允許建立選項卡式窗格。有時,需要動態更改應用程式的外觀 (L&F)。但是,這樣做可能並不總是按預期更新 JTabbedPane。

問題:在 JTabbedPane 中新增分頁後,變更 L&F 不會反映在新分頁中。

解決方案:要解決此問題,請考慮以下方法:

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;
    }
}
登入後複製

解釋:

  • 建立一個JToolBar,提供一個下拉式選單來選擇不同的L&F。

當 L&F 時被選中,它的類別名稱被設定為L&F UI。

SwingUtilities.updateComponentTreeUI(tabbedPane) 指令觸發特定 JTabbedPane 實例 (tabbedPane) 的 L&F 更新。 此解決方案允許動態 L&F 更改,確保JTabbedPane 以及新添加的選項卡反映了所選的 L&F。

以上是在 Swing 中新增分頁後如何動態更新 JTabbedPane 的外觀?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板