Java分割面板和选项卡面板的应用

1、分割面板

JSplitPane类的常用构造方法
构造方法 说明
JSplitPane() 创建一个默认的分割面板。默认情况下为在水平方向上分割,重绘方式为只在调整分隔条位置完成时重绘
JSplitPane(int neworientation) 创建一个按照指定方向分割的分割面板。入口参数newOrientation的可选静态JSplitPane(int newOrientation)常量有HORIZONTAL_SPLIT和VERTICAL_SPLIT
JSplitPane(int neworientation,boolean newContinuousLayout) 创建一个按照指定方向分割,并且按照指定方式重绘的分割面板。如果将入口参数 newContinuousLayout设为true,表示在调整分隔条位置的过程中连续重绘,设为false则表示只在调整分隔条位置完成时重绘

重绘:重新绘制组件的布局方式。如果把 newContinuousLayout设为true,拖动分隔条的时候组件也会跟着动,如果是false,拖动的仅仅是分隔条(组件不会跟着动),待分隔条定下来时,组件才跟着定下来。如果既需要水平分割又要在垂直分割,可以在其中一个分割面板的两个方向上再添加分割面板。小例子:

    // 创建一个水平方向的分割面板
    JSplitPane hSplitPane = new JSplitPane();
    // 分隔条左侧的宽度为40像素
    hSplitPane.setDividerLocation(40);
    // 添加到指定区域
    getContentPane().add(hSplitPane, BorderLayout.CENTER);
    // 在水平面板左侧添加一个标签组件
    hSplitPane.setLeftComponent(new JLabel("左面板"));
    // 创建一个垂直方向的分割面板
    JSplitPane vSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
    // 分隔条上方的高度为30像素
    vSplitPane.setDividerLocation(30);
    vSplitPane.setDividerSize(8);// 分隔条的宽度为8像素
    vSplitPane.setOneTouchExpandable(true);// 提供UI小部件
    // 在调整分隔条位置时面板的重绘方式为连续绘制
    vSplitPane.setContinuousLayout(true);
    hSplitPane.setRightComponent(vSplitPane);// 添加到水平面板的右侧
    // 在垂直面板上方添加一个标签组件
    vSplitPane.setLeftComponent(new JLabel("上"));
    // 在垂直面板下方添加一个标签组件
    vSplitPane.setRightComponent(new JLabel("下"));

在这里插入图片描述

2、选项卡面板

表23.3JTabbedPane类的所有构造方法
构造方法 说明
JTabbedPane() 创建一个默认的选项卡面板。默认情况下标签位于选项卡的上方,布局方式为限制布局
JTabbedPane(int tabPlacement) 创建一个指定标签显示位置的选项卡面板。入口参数tabPlacement的可选静态常量可以TOP、BOTTOM、LEFT 和RIGHT
JTabbedPane(int tabPlacement,int tabLayoutPolicy) 创建一个既指定标签显示位置又指定选项卡布局方式的选项卡面板。入口参数tabLayoutPolicy的可选静态常量可以是WRAP_TAB_LAYOUT(限制布局为默认值)和SCROLL_TAB_LAYOUT(滚动布局)

两种布局方式是限制布局和滚动布局,限制布局中的选项卡面板可以随着窗体的拖动做出合适的调整,滚动布局是窗体变小的时候会出现一个滚动条,可以点击显示被遮挡的选项卡。addTab()方法可以把所有入口参数都设置为空,即:

tabbedPane.addTab(null,null);

方法 说明
addTab(String title,Component component) 添加一个标签为title
addTab(String title,Icon icon,Component component) 添加一个标签为title、图标为icon
addTab(String title,Icon icon,Component component,String tip) 添加一个标签为title、图标为icon、提示为tip的选项卡
InsertTab(String title,Icon icon,Component component,String tip, int index) 在索引位置index处插入一个标签为title、图标为icon、提示为tip的选项卡。索引值从0开始
setTabPlacement(int tabPlacement) 设置选项卡标签的显示位置
setTabLayoutPolicy(int tabLayoutPolicy) 设置选项卡标签的布局方式
setSelectedIndex(int index) 设置指定索引位置的选项卡被选中
setEnabledAt(int index, boolean enabled) 设置指定索引位置的选项卡是否可用。设为true表示可用,设为false则表示不可用
setDisabledIconAt(int index,Icon disabledIcon) 为指定索引位置的选项卡设置不可用时显示的图标
getTabCount() 获得该选项卡面板拥有选项卡的数量
getSelectedIndex() 获得被选中选项卡的索引值
getTitleAt(int index) 获得指定索引位置的选项卡标签
addChangeListener(ChangeListener 1) 为选项卡面板添加捕获被选中选项卡发生改变的事件

小例子:

        final JTabbedPane tabbedPane = new JTabbedPane();
        // 设置选项卡标签的布局方式
        tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
        tabbedPane.addChangeListener(new ChangeListener() {
            public void stateChanged(ChangeEvent e) {
                // 获得被选中选项卡的索引
                int selectedIndex = tabbedPane.getSelectedIndex();
                // 获得指定索引的选项卡标签
                String title = tabbedPane.getTitleAt(selectedIndex);
                System.out.println(title);
            }
        });
        getContentPane().add(tabbedPane, BorderLayout.CENTER);
        URL resource = ExampleFrame_02.class.getResource("/tab.JPG");
        ImageIcon imageIcon = new ImageIcon(resource);
        final JLabel tabLabelA = new JLabel();
        tabbedPane.addTab("选项卡A", imageIcon, tabLabelA, "点击查看选项卡A");
        final JLabel tabLabelB = new JLabel();
        tabbedPane.addTab("选项卡B", imageIcon, tabLabelB, "点击查看选项卡B");
        final JLabel tabLabelC = new JLabel();
        tabbedPane.addTab("选项卡C", imageIcon, tabLabelC, "点击查看选项卡C");
        tabbedPane.setSelectedIndex(2); // 设置索引为2的选项卡被选中
        tabbedPane.setEnabledAt(0, false); // 设置索引为0的选项卡不可用

在这里插入图片描述

欢迎关注我的公众号:物联网技术猿
我可以帮你免费下载csdn积分资料!!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容