C語言中文網 目錄
首頁 > Java Swing 閱讀:1,691

Java Swing JTabbedPane:選項卡組件

< 上一頁Swing樹 Swing文本編輯器的實現下一頁 >

使用選項卡可以在有限的布局空間內展示更多的內容。Swing 使用 JTabbedPane 類實現選項卡。

JTabbedPane 類創建的選項卡可以通過單擊標題或者圖標在選項卡之間進行切換。JTabbedPane 類的常用構造方法如下所示。
  • JTabbedPane():創建一個具有默認 JTabbedPane.TOP 布局的空 TabbedPane。
  • JTabbedPane(int tabPlacement):創建一個空的 TabbedPane,使其具有以下指定選項卡布局中的一種:JTabbedPane.TOP、JTabbedPane.BOTTOM、JTabbedPane.LEFT 或 JTabbedPane.RIGHT。

創建了 JTabbedPane 實例之后,可使用 addTab() 方法和 insertTab() 方法將選項卡/組件添加到 TabbedPane 對象中。選項卡通過對應于添加位置的索引來表示,其中第一個選項卡的索引為 0,最后一個選項卡的索引為選項卡數量減 1。

TabbedPane 使用 SingleSelectionModel 屬性來表示選項卡索引集和當前所選擇的索引。如果選項卡數量大于 0,則總會有一個被選定的索引,此索引默認被初始化為第一個選項卡;如果選項卡數量為 0,則所選擇的索引為 -1。

JTabbedPane類的常用方法如表 1 所示。

表1 JTabbedPane類的常用方法
方法名稱 說明
add(Component component,int index) 在指定的選項卡索引位置添加一個 component,默認的選項卡
標題為組件名稱
addTab(String title, Component component) 添加一個使用 title 作為標題,且沒有圖標的組件
getComponentAt(int index) 返回 index 位置的組件
getSelectedComponent() 返回此選項卡窗格當前選擇的組件
getSelectedIndex() 返回當前選擇的此選項卡窗格的索引
getTabCount() 返回此 tabbedPane 的選項卡數
insertTab(String title,Icon icon,Component component,
String tip,int index)
在 index 位置插入一個組件,該組件通過 title 或 icon(任意一個
都可以為 null)來表示
isEnabledAt(int index) 返回當前是否啟用了 index 位置的選項卡
remove(int index) 移除對應于指定索引的選項卡和組件
setEnabledAt(int index,boolean enabled) 設置是否啟用 index 位置的選項卡
setMnemonicAt(int tablndex,int mnemonic) 設置用于訪問指定選項卡的鍵盤助記符
setTitleAt(int index,String title) 將 index 位置的標題設置為 title,它可以為 null
setToolTipTextAt(int index,String toolTipText) 將 index 位置的工具提示文本設置為 toolTipText,它可以為 null

選項卡面板和卡片布局不同的是,選項卡面板可以有標簽。下面的示例代碼創建了一個選項卡面板,并在選項卡面板中添加了一個 JPand 面板。
JTabbedPane tabbedPane=new JTabbedPane();
ImageIcon icon=new ImageIcon("temp.gif");
JComponent panel1=makeTextPanel("Panel#1");    //創建一個jPanel容器,容納其他組件
tabbedPane.addTab("Tab 1",icon,panel1,"Does nothing");
tabbedPane.setMnemonicAt(0,KeyEvent.VK_1);    //設置快捷鍵

該代碼段中的第三條語句向選項卡面板 tabbedPane 中添加了一個 panel1 組件(該組件是一個 JPanel 對象),該方法中的第一個參數是選項卡標簽文本;第二個參數是 Icon 對象,它作為選項卡標簽上的圖標;第三個參數是添加到選項卡上的組件;第四個參數是當鼠標指針放在選項卡標簽上時出現的提示信息。

例 1

使用 JTabbedPane 類創建一個包含 4 個標簽的選項卡面板,并分別為每個選項卡填充內容,主要實現過程如下。

(1) 創建一個 TabbedPaneDemo 類并繼承 JPanel 父類。
package ch18;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
public class TabbedPaneDemo extends JPanel
{
    public static void main(String[] args)
    {
        JFrame frame=new JFrame("我的電腦 - 屬性");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new TabbedPaneDemo(),BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);
    }
}

(2) 在構造方法中創建空白選項卡,新建標簽,指定標簽的文本和圖片,以及標簽對應的內容面板和快捷訪問符。這些代碼如下:
public TabbedPaneDemo()
{
    super(new GridLayout(1,1));
    JTabbedPane tabbedPane=new JTabbedPane();
    ImageIcon icon=createImageIcon("tab.jp1g");
    JComponent panel1=makeTextPanel("計算機名");
    tabbedPane.addTab("計算機名",icon, panel1,"Does nothing");
    tabbedPane.setMnemonicAt(0,KeyEvent.VK_1);
    JComponent panel2=makeTextPanel("硬件");
    tabbedPane.addTab("硬件",icon,panel2,"Does twice as much nothing");
    tabbedPane.setMnemonicAt(1,KeyEvent.VK_2);
    JComponent panel3=makeTextPanel("高級");
    tabbedPane.addTab("高級",icon,panel3,"Still does nothing");
    tabbedPane.setMnemonicAt(2,KeyEvent.VK_3);
    JComponent panel4=makeTextPanel("系統保護");
    panel4.setPreferredSize(new Dimension(410,50));
    tabbedPane.addTab("系統保護",icon,panel4,"Does nothing at all");
    tabbedPane.setMnemonicAt(3,KeyEvent.VK_4);
    add(tabbedPane);
}

(3) 編寫 makeTextPane() 方法的實現,該方法主要用于創建一個內容面板,并在面板上添加指定的文本內容,具體實現代碼如下所示。
protected JComponent makeTextPanel(String text)
{
    JPanel panel=new JPanel(false);
    JLabel filler=new JLabel(text);
    filler.setHorizontalAlignment(JLabel.CENTER);
    panel.setLayout(new GridLayout(1,1));
    panel.add(filler);
    return panel;
}

(4) 構造方法中用到的 createImageIcon() 方法主要用于加載圖片,如果圖片不存在則返回 null。
protected static ImageIcon createImageIcon(String path)
{
    java.net.URL imgURL=TabbedPaneDemo.class.getResource(path);
    if(imgURL!=null)
    {
        return new ImageIcon(imgURL);
    }
    else
    {
        System.err.println("Couldn't find file: "+path);
        return null;
    }
}

(5) 運行程序,結果如圖 1 所示。假設存在構造方法中指定的圖片,那么在圖 1 所示的運行效果中,每個單擊選項卡標簽前都帶有各自的圖標。

文本選項卡面板
圖1 文本選項卡面板
< 上一頁Swing樹 Swing文本編輯器的實現下一頁 >

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo