[转]Java应用技巧——为JTabbedPane添加关闭按钮

  Java应用技巧——为JTabbedPane添加关闭按钮 收藏
JTabbedPane组件

很多人都为无法在JTabbedPane的标题上添加关闭按钮而苦恼。其实从Java SE 6开始,这个问题已经解决了,看下面这个例子:

view plaincopy to clipboardprint?

//文件名: tab.java   
  
import java.awt.*;   
import java.awt.event.*;   
import javax.swing.*;   
import java.io.*;   
  
class tab extends JFrame   
{   
 tab()   
 {   
  super("选项卡窗格");   
  setVisible(true);   
  setSize(500,310);   
  setLocationRelativeTo(null);   
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
     
  JButton btn = new JButton("X");   
  JTabbedPane pane = new JTabbedPane();   
  JLabel lab = new JLabel("选项卡I");   
  pane.addTab("i",lab);   
  pane.setTabComponentAt(pane.indexOfComponent(lab),btn);   
  add(pane);   
 }   
 public static void main(String[] args)   
 {   
  new tab();   
 }   
}  
//文件名: tab.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

class tab extends JFrame
{
 tab()
 {
  super("选项卡窗格");
  setVisible(true);
  setSize(500,310);
  setLocationRelativeTo(null);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
  JButton btn = new JButton("X");
  JTabbedPane pane = new JTabbedPane();
  JLabel lab = new JLabel("选项卡I");
  pane.addTab("i",lab);
  pane.setTabComponentAt(pane.indexOfComponent(lab),btn);
  add(pane);
 }
 public static void main(String[] args)
 {
  new tab();
 }
}

 

 

    运行结果如下:

 

    请注意,标题上不是文本,是一个按钮。起作用的是第22行的代码:

pane.setTabComponentAt(pane.indexOfComponent(lab),btn);

在这里,我要向大家介绍JTabbedPane类的三个方法:

    void setTabComponentAt(int index,Compomnent component)

    ——该方法用于给指定index的选项卡标题添加控件,空间可以是任何类型,只要是Component的子类。如果index超出范围,则抛出IndexOutOfBoundsException异常。若选项卡标题上已经有Component组件,则抛出IllegalArgumentException异常。

    Component getTabComponent(int index)

    ——该方法用于获取指定index的选项卡标题上的控件。如果index超出范围,则抛出IndexOutOfBoundsException异常。

    int indexOfTabComponent(Component component)

    ——该方法用于获取标题空间为component的选项卡序号。若没有符合要求的选项卡,则返回-1。

使用这三个方法,就可以设置选项卡标题上的组建了。如果设置为JPanel类型,还可以添加多个组件,这也就不用再为无法添加关闭按钮而郁闷了。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ProComFan/archive/2010/01/02/5121244.aspx

你可能感兴趣的:(java,.net,swing,Blog)