7. 标签面板
效果图:

JTabbedPaneDemo .java:
package com.lvshitech.gui;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class JTabbedPaneDemo {
public static void main(String[] args) {
new MyTabbedPane();
}
}
@SuppressWarnings("serial")
class MyTabbedPane extends JFrame implements ChangeListener, ActionListener {
JTabbedPane jt;
JButton jb[];
int index = 0;
public MyTabbedPane() {
super("使用标签面板容器");
jt = new JTabbedPane();
jb = new JButton[5];
for (int i=0; i<5; i++) {
jb[i] = new JButton("第 " + i + " 页面板");
jb[i].addActionListener(this);
jt.addTab("页标签" + i, jb[i]);
}
jt.addChangeListener(this);
getContentPane().add(jt, BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 200);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
setTitle("响应单击" + ((JButton)e.getSource()).getText()); // 单击按钮会改变JFrame的标题
}
@Override
public void stateChanged(ChangeEvent e) {
if (e.getSource() == jt) {
int i = ((JTabbedPane)e.getSource()).getSelectedIndex();
//System.out.println(i); // 这里会输出当前标签页的序号0-4
jb[index].setVisible(false);
jb[i].setVisible(true);
index = i;
}
}
}

浙公网安备 33010602011771号