JAVA 中选项卡的使用

时间:2021-12-04 06:26:20

       JAVA中使用选项卡,要用到JTabbledPane这个容器,现在就来说说这个容器的一些用法:

  一:JTabbedPane构造函数:

 JTabbedPane():建立一个空的JTabbedPane对象。
 JTabbedPane(int tabPlacement):建立一个空的JTabbedPane对象,并指定摆放位置,其位置有四个,JTabbedPane.RIGHT,JTabbedPane.TOP,JTabbedPane..BOTTOM,JTabbedPane.LEFT,图如下:JAVA 中选项卡的使用

JAVA 中选项卡的使用

二:JTabbedPane的事件处理:

  JTabbedPane以处理ChangeEvent事件为主。每当在JTabbedpane选换标签时,都会产生ChangeEvent事件。因此要处理选换标签所
对应的操作,必须实现ChangeListener这个interface.另外JTabbedPane上的每个标签都有索引值(index),一般若没有加以设置
,索引置从左到右依次是0,1,2.....,依此类推,因此下例中,Picture的索引值为0,Label 2的索引值为1。
一个标签都有所对应的操作。

通过使用 addTab和 insertTab方法将选项卡/组件添加到 TabbedPane对象中。选项卡通过对应于添加位置的索引来表示,其中第一个选项卡的索引为 0,最后一个选项卡的索引为选项卡数减 1。

TabbedPane使用 SingleSelectionModel来表示选项卡索引集和当前所选择的索引。如果选项卡数大于 0,则总会有一个被选定的索引,此索引默认被初始化为第一个选项卡。如果选项卡数为 0,则所选择的索引为 -1。

具体例子:

import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;


public class JTablePaneAQ extends JFrame  implements ChangeListener{

 private JTabbedPane tablepane=null;//
 int index=0;
 public static void main(String[] args) {
  JTablePaneAQ aq=new JTablePaneAQ();

 }
 public JTablePaneAQ()
 
 {
  tablepane=new JTabbedPane(JTabbedPane.TOP);

  
  
  //
  JPanel panel_1=new JPanel();
  Button buttonwine=new Button("酒水");
  panel_1.add(buttonwine);
  buttonwine.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent arg0) {
    JOptionPane.showMessageDialog(null, "这是酒水的选项卡。");
   }
  });

  
  //第二个主食选项卡
  JPanel panel_2=new JPanel();
  Button buttonfood=new Button("主食");
  panel_2.add(buttonfood);
  buttonfood.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    JOptionPane.showMessageDialog(null, "这是主食的选项卡。");
   }
  });
  /**
   * 第三个香烟选项卡
   */
  JPanel panel_3=new JPanel();
  Button buttoncigerate=new Button("香烟");
  
  panel_3.add(buttoncigerate);
  buttoncigerate.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    JOptionPane.showMessageDialog(null, "这是香烟的选项卡。");
   }
  });
  
  /**
   * 添加控件
   */
    tablepane.add("酒水", panel_1);
  tablepane.add("主食",panel_2);
  tablepane.add("香烟",panel_3);
  this.add(tablepane);
  
  /**
   * 设置主窗口属性
   */
  this.setBounds(100, 200, 400, 500);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  this.setVisible(true);
  
 }
/**
 * 实现ChangeListener方法,目的在使若左边的标签有点选过,右边的标签才会显示Enable状态。
 * getSelectedIndex()方法可返回目前点选标签的index值,
 * getTabCount()方法可返回JTabbedPane上目前共有几个标签,
 * 而setEnabledAt()方法则是使某个标签
*的状态为Enable或Disable(true为Enable,false为Disable).
*/


 @Override
 public void stateChanged(ChangeEvent arg0) {
  // TODO 自动生成的方法存根
 if (index!=tablepane.getSelectedIndex()){
          if(index<tablepane.getTabCount()-1)
           tablepane.setEnabledAt(index+1,true);
      }
      index=tablepane.getSelectedIndex();

 }

}