Java图形化界面---JSplitPane和JTabbedPane

news2024/11/17 21:34:06

目录

一、JSplitPane

(1)JSplitPane的介绍

(2)JSplitPane的使用步骤

(3)案例

二、JTabbedPane

(1)JTabbedPane的介绍

(2)JTabbedPane的使用步骤

(3)案例


一、JSplitPane

(1)JSplitPane的介绍

JSplitPane用于创建一个分隔面板,它可以将一个组件(通常是一个容器)分割成两个部分,并提供一个分割条,用户可以拖动该分割条来调整两个部分的大小。

(2)JSplitPane的使用步骤

 JSplitPane使用步骤:
(1)创建对象
new JSpliyPane(int n,Component s1,Component s2)
n指定JSplitPane容器的分割方向,值可以是纵向分割JSplitPane.VERTICAL_SPLIT,也可以是横向分割:JSplitPane.HORIZONTAL_SPLIT.
s1:左侧或者上方的组件
s2:右侧或者下方的组件

(2)设置是否开启连续布局的支持(可选)
setContinousLayout(boolean  n)
   默认是关闭的,true是打开,但由于连续布局支持需要支持不断的重绘组件,所以效率会低一些。

(3)设置是否支持一触即展
setOneTouchExpandable(boolean b)
默认是关闭的,true则开启

(4)其他设置
setDivderLocation(double p)设置分隔条的位置为JSplitPane的某个百分比 
setDivderLocation(int l) 通过像素设置分隔条的位置
setDiverSize(int n) 通过像素值设定分隔条的大小
setLeftComponent(Component c) 设定指定组件

(3)案例

案例需求:制作如图所示界面,点击右侧列表,左侧随之变化成介绍信息

 

public class book {
    private String name;//名字
    private Icon icon;//图片
    private String desc;//介绍信息
    public book(String name,Icon icon,String desc){
        this.name=name;
        this.desc=desc;
        this.icon=icon;
    }
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name=name;
    }
    public Icon getIcon(){
        return icon;
    }
    public void setIcon(Icon icon){
        this.icon=icon;
    }
    public String getDesc(){
        return desc;
    }
    public void setDesc(String desc){
        this.desc=desc;
    }

    @Override
    public String toString() {
        return name;
    }
}

public class exer{
    book[] books={new book("java自学宝典",new ImageIcon("D:\\idea\\project\\pro1\\exercise1\\image\\java.png"),"国内最全的Java教程\n,看得懂,学得会"),
            new book("轻量级的JAVAEE企业实战",new ImageIcon("D:\\idea\\project\\pro1\\exercise1\\image\\ee.png"),"开发经典图书,你值得拥有"),
            new book("Android基础教程",new ImageIcon("D:\\idea\\project\\pro1\\exercise1\\image\\android.png"),"教你手把手开发安卓")};
    JFrame s=new JFrame("程序练习");
    JList<book> bookJList=new JList<>(books);
    JLabel bookcover=new JLabel();
    JTextArea bookdesc=new JTextArea();
    public void init(){
        bookJList.setPreferredSize(new Dimension(150,400));
        bookcover.setPreferredSize(new Dimension(220,270));
        bookdesc.setPreferredSize(new Dimension(220,130));
        bookJList.addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) {
                book b=bookJList.getSelectedValue();
                bookcover.setIcon(b.getIcon());
                bookdesc.setText(b.getDesc());
            }
        });
        //组装左边的
        JSplitPane left=new JSplitPane(JSplitPane.VERTICAL_SPLIT,bookcover,new JScrollPane(bookdesc));//出现JScrollPane是为了出现滚动条
        left.setOneTouchExpandable(true);//支持一触即展
        //组装整体
        JSplitPane all=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,left,bookJList);
        s.add(all);

        s.setDefaultCloseOperation(3);
        s.pack();
        s.setVisible(true);
    }
}

二、JTabbedPane

(1)JTabbedPane的介绍

JTabbedPane可以很方便地在窗口上放置多个标签页,每个标签页相当于获得了一个与外部容器具有相同大小的组件摆放区域。通过这种方式,就可以在一个容器里防止更多的组件。

(2)JTabbedPane的使用步骤

使用步骤:
(1)创建对象
JTabbedPane(int tp,int tl)
tp:指定标签标题的放置位置,可以选择SwingConstants中的四个常量:Top,LEFT,BOTTOM,RIGHT。
tl:指定当窗口不能容纳标签页标题时的布局策略,可以选择JTabbedPane.WRAP_TAB_LAYOUT和JTabbedPane.SCROLL_TAB_LAYOUT

(2)通过JTabbedPane对象堆标签进行增删改查

addTab(String t,Icon i,Component c,String tip);添加标签
 t:标签的名称
 i:标签的图标
 c:标签对应的组件
 tip:光标放到标签上的提示

insertTab(String t,Icon i,Component c,String tip,int index)插入标签页
 t:标签的名称
 i:标签的图标
 c:标签对应的组件
 tip:光标放到标签上的提示
 index:在那个索引处插入标签页

setComponentAt(int i,Component c)修改标签页对应的组件
 i:修改哪个索引处的标签
 c:标签对应的组件

removeTabAt(int i)
 i:删除哪个索引处的标签

(3)设置当前显示的标签页
setSelectIndex(int i)设置哪个索引处的标签被选中

(4)设置JTabbedPane的其他属性
setDisabledIconAt(int i,Icon d)将指定位置的禁用图标设置为icon,该图标也可以是null表示不使用禁用图标。


setEnabledAt(int i,boolean b)将指定位置的标签是否启用
setTitleAt(int i,String t)设置指定位置标签页的标题时t,若为null,表示为空
setToolTipTextAt(int i,String t)设置指定位置标签页的提示文本。

(5)为JTabbedPane设置监听器
addChangeListener()

(3)案例

案例需求:制作如图所示界面

public class exer{
    JFrame s=new JFrame("程序练习");
    JTabbedPane tabbedPane=new JTabbedPane(SwingConstants.LEFT,JTabbedPane.SCROLL_TAB_LAYOUT);

    public void init(){
        tabbedPane.addTab("用户管理",new ImageIcon("D:\\idea\\project\\pro1\\image\\弄玉.gif"),new JList<String>(new String[]{"用户1","用户2","用户3"}));
        tabbedPane.addTab("订单管理",new ImageIcon("D:\\idea\\project\\pro1\\image\\李清照.gif"),new JList<String>(new String[]{"订单1","订单2","订单3"}));
        tabbedPane.addTab("商品管理",new ImageIcon("D:\\idea\\project\\pro1\\image\\虎头.gif"),new JList<String>(new String[]{"商品1","商品2","商品3"}));

        tabbedPane.setEnabledAt(0,false);//将用户管理禁用,0是下标
        tabbedPane.setSelectedIndex(1);//设置为默认选中
        tabbedPane.addChangeListener(new ChangeListener() {
            @Override
            public void stateChanged(ChangeEvent e) {
                int selectindex=tabbedPane.getSelectedIndex();
                JOptionPane.showMessageDialog(s,"当前选中第"+(selectindex+1)+"个标签");

            }
        });
        s.add(tabbedPane);
        s.setBounds(400,400,400,400);

        s.setDefaultCloseOperation(3);
        s.setVisible(true);

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/186646.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS样式基础内容6

目录 定位 为什么需要定位&#xff1f; 定位的四种方式 静态定位 相对定位 绝对定位&#xff08;脱标&#xff09; 子绝父相 固定定位&#xff08;脱标&#xff09; 固定定位---固定到版心右侧 粘性定位 定位的叠放顺序z-index 绝对定位盒子水平垂直居中 定位特殊特…

C#/WPF入门到多项目实战开发教程2——

登录界面 布局 右上角退出按钮 编辑图标和名称 用户名设置 布局 用户名框设置 密码框设置&#xff0c;使用模板进行设置 验证码框设置&#xff0c;使用模板进行设置 登录按钮 创建登录模板按钮 绑定模板 失败提醒 第三方登录设置 使用字体图标去替代一般图标&#xff0c;字体…

QThread的应用——在线程里面更新QProgressBar进度条

在线程里面更新QProgressBar进度条 编写QT软件的时候&#xff0c;经常会遇到点击某个按钮&#xff0c;进行一个比较耗时的计算。为了在计算过程中&#xff0c;软件界面就继续响应用户的点击&#xff0c;不会有卡死的感觉&#xff0c;一般会将这个耗时的计算放在另外一个线程里…

“打家劫舍”系列总结,偷不偷这个房间呢?(Java实现)

目录 前言 一、打家劫舍 ——>房子是线性的 1.1、dp定义 1.2、递推公式 1.3、初始化 1.4、遍历顺序 1.5、解题代码 二、打家劫舍II ——>房子是环型 2.1、分析 2.2、解题代码 三、打家劫舍III ——>房子是树形 3.1、dp含义 3.2、递推公式 3.3、解题代码…

【Trusted Firmware-A 移植】

Trusted Firmware-A 移植Trusted Firmware-A 简介步骤一、解压标准 tf-a 源码包,进入 tf-a 源码目录下&#xff1a;二、将 ST 官方补丁文件打到 tf-a 源码中&#xff1a;三、配置交叉编译工具链四、添加设备树文件五、编译源码六、固件烧写结果Trusted Firmware-A 简介 嵌入式…

Magisk工具使用指南

对于一般玩机用户,Magisk官方提供的发布版本即可满足要求,但对于高级开发者来说这远远不够,我们不仅仅是满足于使用,更要学会定制面具,最好的能完全理解面具的核心架构以便于自己也能写出来一套和面具差不多的工具,这才是我们研究面具最根本的原因所在。因为做移动安全,…

edp 基本信号-参数及命令

基本信号及概念通信双方及通道下图为edp规范中的总体框图。通过此框图我们可以了解到&#xff1a;交互的双方&#xff1a;1&#xff09;source device 即 显卡的显示控制部分2) sink device 即 显示屏 双方间的通道&#xff1a;1&#xff09; HPD 即热插拔&#xff0c;通过sink…

mysql之6中索引失效情况

对索引使用左或者左右模糊匹配 mysql> explain select * from user where name王五; -------------------------------------------------------------------------------------------- | id | select_type | table | type | possible_keys | key | key_len | ref …

2023.1.30---TF-A相关

完成TF-A源码的移植过程在tf-a源码目录下将补丁文件打到tf-a源码中2.在上级目录中的Makefile.sdk文件中&#xff0c;配置交叉编译工具链&#xff0c;找到CROSS_COMPILE将红色部分改为arm-linux-gnueabihf-3.在fds目录下添加设备树文件4.在上级目录中的Makefile.sdk文件中&#…

全世界游客访问最多的城市,重庆以5.9亿游客量排名第一

经过全面开放和“阳康”&#xff0c;旅游市场已经开始复苏。现在恰逢寒冬&#xff0c;海南等国内许多旅游胜地成为热门旅游目的地&#xff0c;泰国等国际旅游频频上热搜。旅游市场目前现状如何跟随《旅游市场数据报告》一起来了解吧。全国5A景区数量全国共有318个景区被评为AAA…

重温数据结构与算法之约瑟夫问题

文章目录前言一、暴力法二、动态规划三、实战3.1 力扣 1823. 找出游戏的获胜者3.2 洛谷 P1996 约瑟夫问题参考前言 约瑟夫问题&#xff0c;是一个计算机科学和数学中的问题&#xff0c;在计算机编程的算法中&#xff0c;类似问题又称为约瑟夫环&#xff0c;又称“丢手绢问题”…

K8s关键性概念图解

Kubernetes可以看做云原生时代的操作系统&#xff0c;统一管理下层的基础设施&#xff0c;如计算资源、网络资源、存储资源等等。将集群中存在的各种复杂关系抽象成各种API资源&#xff0c;以统一的方式暴露出各种接口&#xff0c;也便于未来的扩展以及开发团队根据自己的需要定…

JS创建ZIP文件,JSZip的使用

Hi I’m Shendi 最近编写压缩工具&#xff0c;需要使用js创建zip文件&#xff0c;使用 JSZip 插件 官网&#xff1a; https://stuk.github.io/jszip/ Github&#xff1a; https://github.com/Stuk/jszip https://sdpro.top/blog/html/article/1012.html 下载 NPM : npm inst…

论文笔记:NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis

目录 文章摘要 1 Neural Radiance Field Scene Representation (基于神经辐射场的场景表示) 2 Volume Rendering with Radiance Fields (基于辐射场的体素渲染) 2.1 经典渲染方程 2.2 经典的体素渲染方法 2.3 基于分段采样近似的体素渲染方法 3 Optimizing a Neural Rad…

高通开发系列 - linux kernel启动阶段串口无打印采用LED点灯

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 问题背景kernel启动汇编探测kernel启动C函数阶段探测这篇文章之前请参考下:高通开发系列 - MSM8909指示灯操作 问题背景 最近在基于…

38. 外观数列

打卡!!!每日一题 今天给大家带来一道比较有意思的题目&#xff0c;先看看题目描述 题目描述&#xff1a; 题目示例&#xff1a; 大家题目读完可能还没太理解什么意思&#xff0c;我简单给大家翻译翻译&#xff1a; n&#xff1a;表示我们要计算多少次 每一次都是对前面一个…

详细介绍Sentence-BERT:使用连体BERT网络的句子嵌入

Sentence-BERT:Sentence Embeddings using Siamese BERT-Networks 使用连体BERT网络的句子嵌入 BERT和RoBERTa在诸如语义文本相似性&#xff08;STS&#xff09;的句子对回归任务上创造了新的最优的性能。然而&#xff0c;它要求将两个句子都输入网络&#xff0c;这导致了巨大的…

代码随想录--二叉树章节总结Part IV 完结篇

代码随想录–二叉树章节总结Part IV 完结篇&#x1f389; 1.Leetcode501 二叉树中的众数 给你一个含重复值的二叉搜索树&#xff08;BST&#xff09;的根节点 root &#xff0c;找出并返回 BST 中的所有 众数&#xff08;即&#xff0c;出现频率最高的元素&#xff09;。 如…

大数据行业如何获取高薪岗位offer?

在互联网行业需要保持不断的学习。学习大数据先思考自身未来想往哪个方向发展&#xff0c;想要入门快、基础深厚&#xff0c;并且需求多应用广建议从JAVA开始学起&#xff0c;找到适合自己的学习方法。 大数据行业人才稀缺&#xff0c;据第三方统计2020年全国招收程序员394699…

mybatis-plus2

目录 一、乐观锁 二、乐观锁与悲观锁的区别 1.乐观锁和悲观锁的应用场景 三、条件查询构造器 四、分页查询 五、逻辑删除 六、在Mybatis-plus中使用xml配置 一、乐观锁 乐观锁插件 | MyBatis-PlusMyBatis-Plus 官方文档https://baomidou.com/pages/0d93c0/ 当要更新一条…