⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jclosabletabbedpane.java

📁 培训时做的学生管理系统.基于J2SE平台开发
💻 JAVA
字号:
package cn.com.frame;
   
    
  import   javax.swing.JTabbedPane;   
  import   java.awt.Rectangle;   
  import   javax.swing.UIManager;   
  import   javax.swing.ImageIcon;   
  import   javax.swing.JButton;   
  import   javax.swing.JFrame;   
  import   java.awt.BorderLayout;   
  import   java.awt.Color;   
  import   java.awt.event.MouseListener;   
  import   java.awt.Component;   
  import   javax.swing.Icon;   
  import   java.awt.event.MouseEvent;   
  import   java.awt.Graphics;   
    
  public   class   JClosableTabbedPane   
          extends   JTabbedPane   
          implements   MouseListener   {   
          public   JClosableTabbedPane()   {   
                  super();   
                  addMouseListener(this);   
          }   
    
          public   void   addTab(String   title,   Component   component)   {   
                  this.addTab(title,   component,   null);   
          }   
    
          public   void   addTab(String   title,   Component   component,   Icon   extraIcon)   {   
                  super.addTab(title,   new   CloseTabIcon(extraIcon),   component);   
          }   
    
          public   void   mouseClicked(MouseEvent   e)   {   
                  int   tabNumber   =   getUI().tabForCoordinate(this,   e.getX(),   e.getY());   
                  if   (tabNumber   <   0)   
                          return;   
                  Rectangle   rect   =   (   (CloseTabIcon)   getIconAt(tabNumber)).getBounds();   
                  if   (rect.contains(e.getX(),   e.getY()))   {   //the   tab   is   being   closed   
                          this.removeTabAt(tabNumber);   
                  }   
          }   
    
          public   void   mouseEntered(MouseEvent   e)   {}   
    
          public   void   mouseExited(MouseEvent   e)   {}   
    
          public   void   mousePressed(MouseEvent   e)   {}   
    
          public   void   mouseReleased(MouseEvent   e)   {}   
  }   
    
  /**   *   The   class   which   generates   the   'X'   icon   for   the   tabs.   The   constructor   *   accepts   an   icon   which   is   extra   to   the   'X'   icon,   so   you   can   have   tabs   *   like   in   JBuilder.   This   value   is   null   if   no   extra   icon   is   required.   */   
  class   CloseTabIcon   
          implements   Icon   {   
          private   int   x_pos;   
          private   int   y_pos;   
          private   int   width;   
          private   int   height;   
          private   Icon   fileIcon;   
          public   CloseTabIcon(Icon   fileIcon)   {   
                  this.fileIcon   =   fileIcon;   
                  width   =   16;   
                  height   =   16;   
          }   
    
          public   void   paintIcon(Component   c,   Graphics   g,   int   x,   int   y)   {   
                  this.x_pos   =   x;   
                  this.y_pos   =   y;   
                  Color   col   =   g.getColor();   
                  g.setColor(Color.black);   
                  int   y_p   =   y   +   2;   
                  g.drawLine(x   +   1,   y_p,   x   +   12,   y_p);   
                  g.drawLine(x   +   1,   y_p   +   13,   x   +   12,   y_p   +   13);   
                  g.drawLine(x,   y_p   +   1,   x,   y_p   +   12);   
                  g.drawLine(x   +   13,   y_p   +   1,   x   +   13,   y_p   +   12);   
                  g.drawLine(x   +   3,   y_p   +   3,   x   +   10,   y_p   +   10);   
                  g.drawLine(x   +   3,   y_p   +   4,   x   +   9,   y_p   +   10);   
                  g.drawLine(x   +   4,   y_p   +   3,   x   +   10,   y_p   +   9);   
                  g.drawLine(x   +   10,   y_p   +   3,   x   +   3,   y_p   +   10);   
                  g.drawLine(x   +   10,   y_p   +   4,   x   +   4,   y_p   +   10);   
                  g.drawLine(x   +   9,   y_p   +   3,   x   +   3,   y_p   +   9);   
                  g.setColor(col);   
                  if   (fileIcon   !=   null)   {   
                          fileIcon.paintIcon(c,   g,   x   +   width,   y_p);   
                  }   
          }   
    
          public   int   getIconWidth()   {   
                  return   width   +   (fileIcon   !=   null   ?   fileIcon.getIconWidth()   :   0);   
          }   
    
          public   int   getIconHeight()   {   
                  return   height;   
          }   
    
          public   Rectangle   getBounds()   {   
                  return   new   Rectangle(x_pos,   y_pos,   width,   height);   
          }   
    
          public   static   void   main(String   args[])   {   
                  try   {   
                          UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());   
                  }   
                  catch   (Exception   e)   {   
                          e.printStackTrace();   
                  }   
    
                  JClosableTabbedPane   pane   =   new   JClosableTabbedPane();   
                  ImageIcon   icon   =   new   ImageIcon("images/middle.jpg");   
                  pane.addTab("tab1",   new   JButton("first   Button"),   icon);   
                  pane.addTab("tab2",   new   JButton("sec   Button"),   icon);   
                  pane.addTab("tab3",   new   JButton("third   Button"),   icon);   
                  pane.addTab("tab4",   new   JButton("fourth   Button"),   icon);   
    
                  JFrame   frame   =   new   JFrame("Demo");   
                  frame.getContentPane().add(pane,   BorderLayout.CENTER);   
                  frame.setSize(500,   300);   
                  frame.setLocation(300,   200);   
                  frame.show();   
                  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
          }   
  }   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -