java.lang.Object --java.awt.Component --java.awt.Container --javax.swing.JComponent --javax.swing.JTabbedPane
JTabbedPane构造函数:
JTabbedPane():建立一个空的JTabbedPane对象。
JTabbedPane(int tabPlacement):建立一个空的JTabbedPane对象,并指定摆放位置,如TOP,BOTTOM,LEFT,RIGHT.
JTabbedPane的事件处理模式: JTabbedPane以处理ChangeEvent事件为主。每当在JTabbedpane选换标签时,都会产生ChangeEvent事件。
因此要处理选换标签所对应的操作,必须实现ChangeListener这个interface.另外JTabbedPane上的每个标签都有索引值(index),一般若没有加以设置 ,索引置从左到右依次是0,1,2.....,依此类推,因此下例中,Picture的索引值为0,Label 2的索引值为1。一个标签都有所对应的操作。
例子: JTabbedPane2.java
import java.awt.*; import java.awt.event.*; import javax.swing.*; /*由于ChangeEvent是属于Swing的事件,而不是AWT的事件,因此import Swing的事件类来处理 *ChangeEvent事件。 */ import javax.swing.event.*; public class JTabbedPane2 implements ActionListener, ChangeListener { int index = 0; int newNumber = 1; JTabbedPane tabbedPane = null; public JTabbedPane2() { JFrame f = new JFrame("JTabbedPane2"); Container contentPane = f.getContentPane(); JLabel label1 = new JLabel(new ImageIcon(".\\icons\\flower.jpg")); JPanel panel1 = new JPanel(); panel1.add(label1); JLabel label2 = new JLabel("Label 2", JLabel.CENTER); label2.setBackground(Color.pink); label2.setOpaque(true); JPanel panel2 = new JPanel(); panel2.add(label2); JLabel label3 = new JLabel("Label 3", JLabel.CENTER); label3.setBackground(Color.yellow); label3.setOpaque(true); JPanel panel3 = new JPanel(); panel3.add(label3); tabbedPane = new JTabbedPane(); tabbedPane.setTabPlacement(JTabbedPane.TOP);// 设置标签置放位置。 /* * 由于ChangeEvent是属于Swing的事件,而不是AWT的事件,因此import Swing的事件类来处理 * ChangeEvent事件。 */ tabbedPane.addChangeListener(this); tabbedPane.addTab("Picture", null, panel1, "图案"); tabbedPane.addTab("Label 2", panel2); tabbedPane.addTab("Label 3", null, panel3, "label"); tabbedPane.setEnabledAt(2, false);// 设Label 3标签为Disable状态 JButton b = new JButton("新增标签"); b.addActionListener(this); contentPane.add(b, BorderLayout.SOUTH); contentPane.add(tabbedPane, BorderLayout.CENTER); f.pack(); f.show(); f.addWindowListener(new WindowAdapter() { public void WindowClosing(WindowEvent e) { System.exit(0); } }); } /* * 实现ChangeListener方法,目的在使若左边的标签有点选过,右边的标签才会显示Enable状态。getSelectedIndex()方法可返回 * 目前点选标签的index值 * ,getTabCount()方法可返回JTabbedPane上目前共有几个标签,而setEnabledAt()方法则是使某个标签 * 的状态为Enable或Disable(true为Enable,false为Disable). */ public void stateChanged(ChangeEvent e) { if (index != tabbedPane.getSelectedIndex()) { if (index < tabbedPane.getTabCount() - 1) tabbedPane.setEnabledAt(index + 1, true); } index = tabbedPane.getSelectedIndex(); } /* * 实现ActionListener接口,当用户按下"新增标签"按钮时,就会在tabbedPane上新增一个Disable状态的标签。 */ public void actionPerformed(ActionEvent e) { JPanel pane1 = new JPanel(); JLabel label4 = new JLabel("new label" + newNumber, JLabel.CENTER); label4.setOpaque(true); pane1.add(label4); tabbedPane.addTab("new " + newNumber, pane1); tabbedPane.setEnabledAt(newNumber + 2, false); newNumber++; tabbedPane.validate(); } public static void main(String[] args) { new JTabbedPane2(); } }