本文連結: http://blog.csdn.net/xietansheng/article/details/74366541
Java Swing 圖形介面開發(目錄) 1. 概述
官方JavaDocsApi: javax.swing.JTabbedPane
JTabbedPane,選項卡面板。它允許使用者通過點擊給定標題或表徵圖的選項卡,在一組組件之間進行切換顯示。
常用構造方法:
/** * 參事說明: * tabPlacement: 選項卡標題的位置, 值為 JTabbedPane.TOP、JTabbedPane.BOTTOM、 * JTabbedPane.LEFT 或 JTabbedPane.RIGHT, 預設為 TOP * * tabLayoutPolicy: 選項卡位置不能放入所有的選項卡時,放置選項卡的策略, * 值為 JTabbedPane.WRAP_TAB_LAYOUT 或 JTabbedPane.SCROLL_TAB_LAYOUT */JTabbedPane()JTabbedPane(int tabPlacement)JTabbedPane(int tabPlacement, int tabLayoutPolicy)
建立選項卡:
/** * 參數說明: * title: 選項卡的標題 * icon: 選項卡的表徵圖 * tip: 當滑鼠移到該選項卡時,懸浮提示的文本 * component: 選中該選項卡時顯示的內容組件 */void addTab(String title, Component component)void addTab(String title, Icon icon, Component component)void addTab(String title, Icon icon, Component component, String tip)/** * 在指定索引位置插入一個選項卡 */void insertTab(String title, Icon icon, Component component, String tip, int index)
移除選項卡:
// 移除指定位置的選項(下面兩個方法完全一致)void removeTabAt(int index)void remove(int index)// 移除指定內容控制項的選項卡void remove(Component component)// 移除所有選項卡void removeAll()
選項卡相關操作:
// 設定當前選中的選項卡void setSelectedIndex(int index)// 擷取當前選中的選項卡索引int getSelectedIndex()// 擷取當前選中的選項卡對應的內容組件Component getSelectedComponent()// 設定 index 位置的選項卡的標題void setTitleAt(int index, String title)// 設定 index 位置的選項卡的表徵圖void setIconAt(int index, Icon icon)// 設定 index 位置的選項卡是否可用void setEnabledAt(int index, boolean enabled)// 將 index 位置的內容組件設定為 componentvoid setComponentAt(int index, Component component)// 擷取選項卡的數量int getTabCount()/** * 自訂選項卡標題位置的組件, 這裡的 titleComponent 將放到選項卡標題位置。 * 應用情境: 例如, 在選項卡標題位置添加一個關閉按鈕, 點擊按鈕移除選項卡。 */void setTabComponentAt(int index, Component titleComponent)
狀態監聽器:
// 添加選項卡選中狀態改變的監聽器void addChangeListener(ChangeListener l)
2. 代碼執行個體
package com.xiets.demo;import javax.swing.*;import javax.swing.event.ChangeEvent;import javax.swing.event.ChangeListener;import java.awt.*;public class Main { public static void main(String[] args) { JFrame jf = new JFrame("測試視窗"); jf.setSize(300, 300); jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); jf.setLocationRelativeTo(null); // 建立選項卡面板 final JTabbedPane tabbedPane = new JTabbedPane(); // 建立第 1 個選項卡(選項卡只包含 標題) tabbedPane.addTab("Tab01", createTextPanel("TAB 01")); // 建立第 2 個選項卡(選項卡包含 標題 和 表徵圖) tabbedPane.addTab("Tab02", new ImageIcon("bb.jpg"), createTextPanel("TAB 02")); // 建立第 3 個選項卡(選項卡包含 標題、表徵圖 和 tip提示) tabbedPane.addTab("Tab03", new ImageIcon("bb.jpg"), createTextPanel("TAB 03"), "This is a tab."); // 添加選項卡選中狀態改變的監聽器 tabbedPane.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { System.out.println("當前選中的選項卡: " + tabbedPane.getSelectedIndex()); } }); // 設定預設選中的選項卡 tabbedPane.setSelectedIndex(1); jf.setContentPane(tabbedPane); jf.setVisible(true); } /** * 建立一個面板,面板中心顯示一個標籤,用於表示某個選項卡需要顯示的內容 */ private static JComponent createTextPanel(String text) { // 建立面板, 使用一個 1 行 1 列的網格布局(為了讓標籤的寬高自動撐滿面板) JPanel panel = new JPanel(new GridLayout(1, 1)); // 建立標籤 JLabel label = new JLabel(text); label.setFont(new Font(null, Font.PLAIN, 50)); label.setHorizontalAlignment(SwingConstants.CENTER); // 添加標籤到面板 panel.add(label); return panel; }}
結果展示:
PS: 測試的截圖是在 MAC OS X 環境下啟動並執行截圖,該組件在 Windows 環境下的顯示效果可能有較大差別。