博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swing-选项卡面板JTabbedPane-入门
阅读量:6885 次
发布时间:2019-06-27

本文共 4164 字,大约阅读时间需要 13 分钟。

       注:非原创,内容源自《》,笔者做了少量修改。

  选项卡面板是一个很常用的Swing组件,在window下,右击我的电脑,查看属性,就是一个典型的选修卡面板。当然还有最经典的谷歌浏览器,也是选项卡的一个典型。Swing中的选项卡使用JTabbedPane类来实现,下面就来介绍JTabbedPane的使用:

   1.构建一个JTabbedPane对象

       JTabbedPane tab = new JTabbedPane();

   2.向其中添加选项卡,一个选项卡就是一个Compnent组件,常用一个JPane面板把需要的组件组织起来, 其实Swing的思想也是这样的,他把组件分为两类一个是普通的组件一个是可以存放组件的组件被称为容器,最外面的frame通过布局方式把容器组织起来,各个容器又把自己的组件通过布局方式组织起来,所以Swing的使用只要把容器、组件、布局方式搞定就可以了,呵呵,这里扯多了,下面是添加的方法:

       tab.addTab(String title,Component compnent);

       tab.addTab(String title,Icon icon,Component compnent);

       tab.addTab(String title,Icon icon,Component compnent,String tooltip);

    title就是选项卡的标题,compnent当然就是选项卡的内容了,icon是图标tooltip是工具提示。addTab方法是按照顺序添加到选项卡集的最后,我们知道选项卡面板实际是一个选项卡的集合,每个选项卡从0开始计数,也就是说第一个选项卡的编号为0.于是我们可以把一个选项卡添加到选项卡集的任何一个位置上,

       tab.addTab(String title,Icon icon,Component compnent,String tooltip,int index);

       当然也可以根据编号删除一个选项卡,

       tab.removeTabAt(int index);    

    那么这么多选项卡,一次只能显示一个,如何显示指定的选项卡呢?

       tab.setSelectedIndex(int index);

    如果选项卡太多,可以选择他们的显示方式,隐藏或者滚动

       tab.setTabLayoutPolicy(JTabbedPane.WRAP_TAB_LAYOUT);

       tab.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);

    当你选中一个选项卡时怎么相应事件更新界面呢?要给面板添加一个ChangeListener,它只有一个方法叫stateChanged。

 

下面是示例代码:

/* * TabbedPaneTest.java * @2015-06-02 */ import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ButtonGroup;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JRadioButton;import javax.swing.JTabbedPane;import javax.swing.event.ChangeEvent;import javax.swing.event.ChangeListener;  public class TabbedPaneTest {     public static void main(String[] args) {       // TODO Auto-generated method stub       TabbedPaneFrame frame = new TabbedPaneFrame();       frame.setTitle("TabbedPaneFrame");       frame.setSize(400, 300);       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       frame.setVisible(true);    } } class TabbedPaneFrame extends JFrame {     private JTabbedPane tabbedPane;    private int count = 0;     public TabbedPaneFrame() {        // 添加选项卡       tabbedPane = new JTabbedPane();       tabbedPane.addTab("Mercury", null);       tabbedPane.addTab("Venus", null);       tabbedPane.addTab("Earth", null);       tabbedPane.addTab("Mars", null);       tabbedPane.addTab("Jupiter", null);       tabbedPane.addTab("Saturn", null);       tabbedPane.addTab("Uranus", null);       tabbedPane.addTab("Neptune", null);       tabbedPane.addTab("Pluto", null);       // 添加选项卡面板       add(tabbedPane, "Center");       // 添加监听器       tabbedPane.addChangeListener(new ChangeListener() {            @Override           public void stateChanged(ChangeEvent e) {              // TODO Auto-generated method stub              int n = tabbedPane.getSelectedIndex();              loadTab(n);           }       });       loadTab(0);       //添加单选按钮,用于调节选项卡的布局方式       JPanel buttonPanel = new JPanel();       ButtonGroup buttonGroup = new ButtonGroup();       JRadioButton wrapButton = new JRadioButton("Wrap tabs");       wrapButton.setSelected(true);       wrapButton.addActionListener(new ActionListener() {            @Override           public void actionPerformed(ActionEvent arg0) {              // TODO Auto-generated method stub              tabbedPane.setTabLayoutPolicy(JTabbedPane.WRAP_TAB_LAYOUT);           }       });       buttonGroup.add(wrapButton);       buttonPanel.add(wrapButton);        JRadioButton scroButton = new JRadioButton("Scroll tabs");       scroButton.addActionListener(new ActionListener() {            @Override           public void actionPerformed(ActionEvent arg0) {              // TODO Auto-generated method stub       tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);           }       });       buttonGroup.add(scroButton);       buttonPanel.add(scroButton);        add(buttonPanel, BorderLayout.SOUTH);    }    private void loadTab(int n) {       String title = tabbedPane.getTitleAt(n);       String countString = String.valueOf(count ++);       String msg = "this is " + title + ", load at " + countString + " times";       tabbedPane.setComponentAt(n, new JLabel(msg));    }}

 

 

 

 

运行截图:

1 Wrap模式效果

2 Scroll模式效果

转载于:https://www.cnblogs.com/pzy4447/p/4553104.html

你可能感兴趣的文章
云计算,网格计算,分布式计算,集群计算的区别
查看>>
在CentOS 6.5 环境下利用yum搭建LNMP环境
查看>>
Greenplum闰秒故障的分析解决
查看>>
iMatrix平台中组织结构树标签acsTags:tree用法
查看>>
WinForm多线程编程
查看>>
Hyperledger Fabric 客户端开发五
查看>>
spring的参数校验
查看>>
Nginx的URL Rewrite基本指令
查看>>
Properties属性文件操作工具类PropsUtil
查看>>
计算机系统要素 C4
查看>>
Mysql存储引擎
查看>>
每看一次自己写的代码都有一种重写的冲动
查看>>
androidManifest.xml问题
查看>>
升级ubuntu后nginx无法启动
查看>>
inux多线程顺序控制的示例
查看>>
SQLServer 2016安装时的错误:Polybase要求安装Oracle JRE 7更新51或更高版本
查看>>
wkhtmtopdf--高分辨率转HTML成PDF(二)
查看>>
如何优雅的编写Dockerfile
查看>>
调试时显示数据防止乱码
查看>>
logback 日志输出级别设置
查看>>