24、Java Swing JTabbedPane:选项卡组件
使用選項卡可以在有限的布局空間內展示更多的內容。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類的常用方法:
- 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 父類。
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 所示的運行效果中,每個單擊選項卡標簽前都帶有各自的圖標。
總結
以上是生活随笔為你收集整理的24、Java Swing JTabbedPane:选项卡组件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 23、Java Swing JTree:
- 下一篇: 25、Java Swing文本编辑器的实