JavaSwing_3.4: JTabbedPane(選項卡面板)
阿新 • • 發佈:2019-02-07
1. 概述
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 位置的內容元件設定為 component
void 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 環境下的顯示效果可能有較大差別。