JTabbedPane如切換卡一般,大大的最佳化了布局,方便使用者操作。Java預設的JTabbedPane添加tab時只會顯示一個標題,咱們這裡來給它實現關閉按鈕,當滑鼠移上這個tab時,便顯示關閉按鈕,移除時,便隱藏。也沒什麼好說的,實現代碼如下:
import java.awt.GridLayout;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.JLabel;import javax.swing.JPanel; public class addTab implements MouseListener{ JPanel jp; JLabel lab ; JLabel lab3=new JLabel(); public addTab(){ lab= new JLabel("選項卡1"); JLabel lab1 = new JLabel("選項卡"); jp=new JPanel(); GridLayout gl= new GridLayout(1,1,10,0); jp.setLayout(gl); lab1.setHorizontalAlignment(JLabel.LEFT);//設定文字顯示在最左邊 lab3.setHorizontalAlignment(JLabel.RIGHT);// 設定文字顯示在最右邊 jp.add(lab1); jp.add(lab3); tab.pane.addTab("i",lab); tab.pane.setTabComponentAt(tab.pane.indexOfComponent(lab),jp);//實現這個功能的就這一條最重要的語句 lab3.addMouseListener(this); } @Override public void mouseClicked(MouseEvent arg0) { // TODO Auto-generated method stub tab.pane.remove(tab.pane.indexOfTabComponent(jp)); } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub lab3.setText("x "); } @Override public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub lab3.setText(""); } @Override public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub }}
主方法類調用這個類:
import java.awt.event.*;import javax.swing.*; public class tab extends JFrame implements ActionListener{ JMenuItem mi;staticJTabbedPane pane;public tab(){super("選項卡窗格");setVisible(true);setSize(800,600);setLocationRelativeTo(null);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mi=new JMenuItem("增加");JMenu menu=new JMenu("增加");menu.add(mi);JMenuBar bar=new JMenuBar();bar.add(menu);setJMenuBar(bar);pane = new JTabbedPane();add(pane);new addTab();mi.addActionListener(this);}public static void main(String[] args) throws Exception{new tab();}@Overridepublic void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==mi){ new addTab(); }}}
實現:
當滑鼠移動到第二個選項卡上,便顯示出“X”(沒有截取到滑鼠箭頭):
關閉第二個選項卡: