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();

}

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if(e.getSource()==mi){

new addTab();

}

}

}

实现效果图:

当鼠标移动到第二个选项卡上,便显示出“X”(没有截取到鼠标箭头):

关闭第二个选项卡:

java jtabbedpane 关闭_JTabbedPane实现关闭按钮 | 学步园相关推荐

  1. java个人所得税计算_java个人所得税计算器 | 学步园

    class Caculate{ private String name; private double money; private double actual; /** * @param usern ...

  2. java sortedset_Java类集-SortedSet接口 | 学步园

    TreeSet实现了SortedSet接口 package iotest; import java.util.SortedSet; import java.util.TreeSet; public c ...

  3. java secretkey_Java中的SecretKeyFactory类 | 学步园

    SecretKeyFactory表示秘密密钥的工厂.类声明:public class SecretKeyFactoryextends Object 密钥工厂用来将密钥(类型 Key 的不透明加密密钥) ...

  4. java的spinner_java中的spinner | 学步园

    Java 2 SDK,1.4 beta 的最新发行版向 JFC/Swing 组件集添加了两个强大的新组件.其中一个是 JSpinner ,它使用户能够方便地选择日期.数字或拾取列表中的选项.(另一个是 ...

  5. java迭代器 异常_java迭代器失效 | 学步园

    今天在测试代码的时候出现一个异常ConcurrentModificationException,该异常网上很多解决方案以及解释,但我还是再记录一遍吧. 代码抽象出来是这样的: import java. ...

  6. java精确度_java的数值精度问题 | 学步园

    1.java的float和double是给科学计算用的,也就是说不能用于商业计算: 2.如果是商业计算那么必需使用java.math.BigDecimal,且必需要使用string来构造: (转载:h ...

  7. java 项目心得_读懂JAVA WEB项目的一点心得 | 学步园

    今日接手一个JAVA开发的WEB项目,代码已是现成的(无文档),需要熟悉和日后修改.很久没有写代码了,于是有点儿不知如何下手,现在将自己感觉有用的做法记录一下. 一.熟悉应用整体功能 WEB项目的话, ...

  8. vector用法 java equals_java泛型vector的用法 | 学步园

    java.util  类 Vector boolean add(E o) 将指定元素追加到此向量的末尾. void add(int index, E element) 在此向量的指定位置插入指定的元素 ...

  9. ls算法java实现_Java API之算法 | 学步园

    本节中所描述的多态 排序(Sorting) 排序算法可为一个 List 重新排序,以使它的元素按照某种排序关系成上升式排序.有两种形式的操作被提供.简单形式的操作只采用一个 List 并按照它的元素的 ...

最新文章

  1. POJ - 1986 Distance Queries 倍增求LCA
  2. cgroup代码浅析(2)
  3. scanf_s 发送访问冲突_程序员如何解决并发冲突的难题?
  4. 消息队列 Kafka 的基本知识及 .NET Core 客户端
  5. 星巴克全面上线美团外卖 并联合美团推出“1971客厅”
  6. html 换行_李亚涛:清除HTML所有格式并且删除换行与回车,只显示文本
  7. 用pyinstaller把python脚本编译成可执行程序(windows系统)
  8. 数据丢包怎么修复_网络丢包率高怎么办
  9. 云信IM服务端API调用(THINKPHP版)
  10. 【笔记】基于TF-IDF 算法的文本相似度以衡量技术革新
  11. 多因子风险建模-协方差矩阵、投资组合风险
  12. python海龟画图代码大全_【程序源代码】python 海龟画图
  13. Liunx中mysql服务
  14. C#软件license管理(简单软件注册机制)
  15. Visual Studio Enterprise 2015简体中文版(企业版)秘钥
  16. ST-LINK/V2驱动下载与安装
  17. 设计复数类Complex,实现运算符重载。
  18. WORD Tips: 多行公式编辑及对齐
  19. ipad手写笔哪个牌子好用?便宜的ipad触控笔
  20. 【STM32H7教程】第85章 STM32H7的SPI 总线应用之SPI Flash的STM32CubeProg下载算法制作

热门文章

  1. 每日一皮:不允许穿格子衫之后...
  2. IDEA界面太丑??尝试一下这几个插件!
  3. 最后一个 IPV4 地址分配完毕,正式向IPV6过渡!
  4. 选择开源项目的时候,哪些因素是最需要考量的?
  5. php 如何让图片循环显示图片,[宜配屋]听图阁
  6. java语法结构是什么意思_java - 基础 - 语法结构
  7. 用计算机写试卷反思,100分试卷反思怎么写
  8. matlab里performance,关于神经网络performance图的问题
  9. ubuntu 使用 adb shell
  10. AttributeError: 'PyQt5.QtCore.pyqtSignal' object has no attribute 'connect'