使用选项卡可以在有限的布局空间内展示更多的内容。Swing 使用 JTabbedPane 类实现选项卡。

JTabbedPane 类创建的选项卡可以通过单击标题或者图标在选项卡之间进行切换

JTabbedPane 类的常用构造方法:

  • JTabbedPane():创建一个具有默认 JTabbedPane.TOP 布局的空 TabbedPane。
  • JTabbedPane(int tabPlacement):创建一个空的TabbedPane,使其具有以下指定选项卡布局中的一种:JTabbedPane.TOP、JTabbedPane.BOTTOM、JTabbedPane.LEFT
    或 JTabbedPane.RIGHT。

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

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

JTabbedPane类的常用方法:

  • add(Component component,int index) ----在指定的选项卡索引位置添加一个 component,默认的选项卡标题为组件名称
  • addTab(String title, Component component) ----添加一个使用 title 作为标题,且没有图标的组件
  • getComponentAt(int index) ----返回 index 位置的组件
  • getSelectedComponent() ----返回此选项卡窗格当前选择的组件
  • getSelectedIndex() ----返回当前选择的此选项卡窗格的索引
  • getTabCount() ----返回此 tabbedPane 的选项卡数
  • insertTab(String title,Icon icon,Component component, String tip,int index)---- 在 index 位置插入一个组件,该组件通过 title 或 icon(任意一个 都可以为 null)来表示
  • isEnabledAt(int index) ----返回当前是否启用了 index 位置的选项卡
  • remove(int index)---- 移除对应于指定索引的选项卡和组件
  • setEnabledAt(int index,boolean enabled)---- 设置是否启用 index 位置的选项卡
  • setMnemonicAt(int tablndex,int mnemonic) ----设置用于访问指定选项卡的键盘助记符
  • setTitleAt(int index,String title)---- 将 index 位置的标题设置为 title,它可以为 null
  • setToolTipTextAt(int index,String toolTipText) ----将 index 位置的工具提示文本设置为
    toolTipText,它可以为 null

选项卡面板和卡片布局不同的是,选项卡面板可以有标签。下面的示例代码创建了一个选项卡面板,并在选项卡面板中添加了一个 JPand 面板。

JTabbedPane tabbedPane=new JTabbedPane();
ImageIcon icon=new ImageIcon("temp.gif");
JComponent panel1=makeTextPanel("Panel#1");    //创建一个jPanel容器,容纳其他组件
tabbedPane.addTab("Tab 1",icon,panel1,"Does nothing");
tabbedPane.setMnemonicAt(0,KeyEvent.VK_1);    //设置快捷键

该代码段中的第三条语句向选项卡面板 tabbedPane 中添加了一个 panel1 组件(该组件是一个 JPanel 对象),该方法中的第一个参数是选项卡标签文本;第二个参数是 Icon 对象,它作为选项卡标签上的图标;第三个参数是添加到选项卡上的组件;第四个参数是当鼠标指针放在选项卡标签上时出现的提示信息。

例 1
使用 JTabbedPane 类创建一个包含 4 个标签的选项卡面板,并分别为每个选项卡填充内容,主要实现过程如下。

(1) 创建一个 TabbedPaneDemo 类并继承 JPanel 父类。

import javax.swing.JPanel;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
public class TabbedPaneDemo extends JPanel
{public static void main(String[] args){JFrame frame=new JFrame("我的电脑 - 属性");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.add(new TabbedPaneDemo(),BorderLayout.CENTER);frame.pack();frame.setVisible(true);}
}

(2) 在构造方法中创建空白选项卡,新建标签,指定标签的文本和图片,以及标签对应的内容面板和快捷访问符。这些代码如下:

public TabbedPaneDemo()
{super(new GridLayout(1,1));JTabbedPane tabbedPane=new JTabbedPane();ImageIcon icon=createImageIcon("tab.jp1g");JComponent panel1=makeTextPanel("计算机名");tabbedPane.addTab("计算机名",icon, panel1,"Does nothing");tabbedPane.setMnemonicAt(0,KeyEvent.VK_1);JComponent panel2=makeTextPanel("硬件");tabbedPane.addTab("硬件",icon,panel2,"Does twice as much nothing");tabbedPane.setMnemonicAt(1,KeyEvent.VK_2);JComponent panel3=makeTextPanel("高级");tabbedPane.addTab("高级",icon,panel3,"Still does nothing");tabbedPane.setMnemonicAt(2,KeyEvent.VK_3);JComponent panel4=makeTextPanel("系统保护");panel4.setPreferredSize(new Dimension(410,50));tabbedPane.addTab("系统保护",icon,panel4,"Does nothing at all");tabbedPane.setMnemonicAt(3,KeyEvent.VK_4);add(tabbedPane);
}

(3) 编写 makeTextPane() 方法的实现,该方法主要用于创建一个内容面板,并在面板上添加指定的文本内容,具体实现代码如下所示。

protected JComponent makeTextPanel(String text)
{JPanel panel=new JPanel(false);JLabel filler=new JLabel(text);filler.setHorizontalAlignment(JLabel.CENTER);panel.setLayout(new GridLayout(1,1));panel.add(filler);return panel;
}

(4) 构造方法中用到的 createImageIcon() 方法主要用于加载图片,如果图片不存在则返回 null。

protected static ImageIcon createImageIcon(String path)
{java.net.URL imgURL=TabbedPaneDemo.class.getResource(path);if(imgURL!=null){return new ImageIcon(imgURL);}else{System.err.println("Couldn't find file: "+path);return null;}
}

(5) 运行程序,结果如图 1 所示。假设存在构造方法中指定的图片,那么在图 1 所示的运行效果中,每个单击选项卡标签前都带有各自的图标。

24、Java Swing JTabbedPane:选项卡组件相关推荐

  1. 【Java Swing探索之路系列】之二:Java Swing布局面板组件

    作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 面 ...

  2. java动态添加组件_有关Java Swing动态增加组件

    展开全部 效果图 参考代码import java.awt.*; import java.awt.event.*; import javax.swing.*; //本类继承自JFrame 实现了 Act ...

  3. Java Swing 树状组件JTree的使用方法【图】

    树中特定的节点可以由 TreePath(封装节点及其所有祖先的对象)标识,或由其显示行(其中显示区域中的每一行都显示一个节点)标识.展开 节点是一个非叶节点(由返回 false 的 TreeModel ...

  4. 基于Java Swing界面编程教学

    基于Java Swing界面编程 Swing是Java基础类的一部分,是一个为Java设计的GUI工具包. Swing包含了诸多图形用户界面(GUI)器件,提供了许多比awt更好的屏幕显示元素. 本教 ...

  5. java容器doc_java容器组件

    [解析] java.awt包提供了基本的 java程序的GUI设计工具.主要包括下述三个概念:组件―Component;容器―Container;布局管理器―LayoutManage.所以选项A是正确 ...

  6. java jbutton边框颜色_在Java Swing中更改JButton的边框颜色,以保留插图

    我想更改Java Swing中JButton组件的边框颜色. 我尝试了以下方法: package com.example.test; import java.awt.Color; import jav ...

  7. JAVA card 应用开发(四) Java Card CAP 文件组件分析

    Java Card CAP 文件组件分析 来源:http://www.dreamingfish123.info/?cat=79 Java Card CAP 文件组件分析 00.1 Java Card ...

  8. Java Swing窗体编写——窗口创建思想

    目录 Java Swing 1.常见组件的介绍 1.1.相关内容 1.2.创建思想 2.总结 Java Swing 1.常见组件的介绍 JFrame.JPanel.JLabel.JTextArea.J ...

  9. Java Swing中的下拉式菜单(menu)、弹出式菜单(JPopupMenu)、选项卡窗体(JTabbedPane),TextArea右键菜单 组件使用案例

    文章目录 1.. Java弹出菜单,为JTextArea添加了右键弹出式菜单 2.:下拉式菜单的创建步骤: 3:弹出式菜单的创建步骤: 4:选项卡窗体: 菜单是GUI中最常用的组件,菜单不是Compo ...

最新文章

  1. $httpprovider指令中拦截器interceptors的使用介绍
  2. HackerRank Week of Code 26
  3. mysql seconds_behind_master_MySQL 复制延迟 Seconds_Behind_Master 究竟是如何计算的
  4. 邮件系统之webmail
  5. 2016蓝桥杯省赛---java---B---1(煤球数目)
  6. tooooooooooooold
  7. Spring Boot笔记-JPA分页(后端分页)
  8. 对象交互 模拟顾客点菜 c# 1614008435
  9. 用SDWebImage渐变加载图片
  10. vi编辑器和系统分区
  11. linux-ab压力测试
  12. 笔记 GWAS 操作流程2-1:缺失质控
  13. 前端工程化-我们需要做什么
  14. Joda-Time 实战
  15. python中while true输入正数_python入门学习------while和输入内容
  16. 百度云盘上传显示服务器异常,百度网盘常见问题之网络异常,这里有最全面的解决方法...
  17. alicloud linux3安装Jdk和Maven
  18. java poi excel 图表_java poi导出带图表的excel表格
  19. 爬山--登上山顶的方式有多少种?
  20. 百度云 登陆不上错误码码1550010

热门文章

  1. 使用容器与云计算技术快速进行深度学习
  2. 虚拟机 centos 6.5 扩展根目录分区大小
  3. Lightgbm with Hyperopt
  4. 机器学习实战-数据探索(变量变换、生成)
  5. 算法训练_ALGO14_回文数
  6. BindingException: Invalid bound statement (not found)问题排查:SpringBoot集成Mybatis重点分析...
  7. JAVA多线程提高十四: 面试题
  8. http协议、cookie及session
  9. CentOS7密码忘记解决方法GRUB菜单加密
  10. 函数节流与防抖的实现