swing快速入门(三十六)分割面板

🥁注释很详细,直接上代码

上一篇

🔒新增内容:
🗝️1.列表选中事件监听器
🗝️2. 分割面板的垂直和水平方式创建
🗝️3.“一触即展”特性开关
🗝️4.分割面板大小自适应
🗝️5.连续布局特性开关
🗝️6. 重写toString方法实现列表提取指定内容

🚨完整代码:

package swing31_40;import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.*;// 图书类
class Book {private String name;//图书名称private Icon icon;//图书图标private String desc;//图书描述//构造方法public Book(String name, Icon icon, String desc) {this.name = name;this.icon = icon;this.desc = desc;}//获取图书名称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;}//重写toString方法@Overridepublic String toString() {return name;}
}public class swing_test_34 {//图书数组Book[] books = {new Book("java自学宝典", new ImageIcon("img/java.png"), "国内关于 Java 编程最全面的图书 \n 看得懂 , 学得会"),new Book("轻量级的JAVAEE企业应用实战", new ImageIcon("img/ee.png"), "SSM整合开发的经典图书,你值的拥有"),new Book("Android基础教程", new ImageIcon("img/android.png"), "全面介绍Android平台应用程序\n 开发的各方面知识")};//创建窗口JFrame jFrame = new JFrame("测试JSplitPane");//列表展示图书的名字//toString方法已重写返回图书名称JList<Book> bookList = new JList<>(books);//图书封面展示区域JLabel bookCover = new JLabel();//图书描述展示区域JTextArea bookDesc = new JTextArea();public void init(){//为三个组件设置最佳大小bookList.setPreferredSize(new Dimension(150,400));bookCover.setPreferredSize(new Dimension(220,330));bookDesc.setPreferredSize(new Dimension(220,70));//为列表添加事件监听器bookList.addListSelectionListener(new ListSelectionListener() {//当列表项被选中时@Overridepublic void valueChanged(ListSelectionEvent e) {//获取选中的图书Book book = bookList.getSelectedValue();//设置封面图标bookCover.setIcon(book.getIcon());//设置描述文本bookDesc.setText(book.getDesc());}});//创建一个垂直的分割面板//上面是图书封面// 下面是图书描述JSplitPane left = new JSplitPane(JSplitPane.VERTICAL_SPLIT,bookCover,new JScrollPane(bookDesc));//打开"一触即展"特性//当鼠标点击分隔条时,分隔条会自动调整大小left.setOneTouchExpandable(true);//设置分隔条的大小left.setDividerSize(10);//设置分割面板根据组件的大小调整最佳布局left.resetToPreferredSizes();//创建一个水平分隔面板JSplitPane content = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, left, bookList);//设置支持连续布局//当分隔条拖动时,分隔面板会时刻重绘以调整大小//如果不打开则是拖动至放开后才会重绘调整大小content.setContinuousLayout(true);//将分隔面板添加到窗口中jFrame.add(content);//设置窗口的默认关闭操作jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口的大小jFrame.pack();//设置窗口可见jFrame.setVisible(true);}public static void main(String[] args) {//启动程序new swing_test_34().init();}}

💡效果演示:

在这里插入图片描述

🛎️素材链接:

ee.png
img-blog.csdnimg.cn/direct/bcb656a3949448ed86734a91428c90f6.png

java.png
img-blog.csdnimg.cn/direct/b71525e2474b4da7a990011232a9b942.png

android.png
img-blog.csdnimg.cn/direct/fb6cb8133de64324809ca19eb953480b.png
请添加图片描述
请添加图片描述

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于“Python”的核心知识点整理大全58

目录 19.2.3 注销 1. 注销URL urls.py 2. 视图函数logout_view() views.py 3. 链接到注销视图 base.html 19.2.4 注册页面 1. 注册页面的URL模式 urls.py 2. 视图函数register() views.py 3. 注册模板 register.html 4. 链接到注册页面 base.html 注意 19.3 …

【error C2146: 语法错误: 缺少“;”(在标识符“PVOID64”的前面)】

用VS2013编译报错&#xff1a; 有人说既然是找不到PVOID64加个typedef就行了。经过本人的试验发现&#xff0c;的确是vs的include顺序问题&#xff0c;调整include顺序保证dx目录在IncludePath目录的下面即可解决问题。 在vs中&#xff0c;选择工具->选项->项目和解决方…

【unity插件】推荐一款开源的Unity网格破碎插件,实现在Unity中展示可破坏的墙壁的——unity-fracture

最终效果 地址 https://github.com/ElasticSea/unity-fracture 介绍 FractureThis.cs 脚本获取其游戏对象中的所有网格并合并它们。这个全局网格被发送到这里 nvblast &#xff0c;以分解成块。块的内部部分为要应用的材料生成了新的 UV。原始游戏对象被隐藏&#xff0c;每个…

详解静态网页数据获取以及浏览器数据和网络数据交互流程-Python

目录 前言 一、静态网页数据 二、网址通讯流程 1.DNS查询 2.建立连接 3.发送HTTP请求 4.服务器处理请求 5.服务器响应 6.渲染页面 7.页面交互 三、URL/POST/GET 1.URL 2.GET 形式 3.POST 形式 四.获取静态网页数据 1.requests库 点关注&#xff0c;防走丢&am…

关于“Python”的核心知识点整理大全50

目录 python_repos.py 17.1.6 概述最受欢迎的仓库 python_repos.py 17.1.7 监视 API 的速率限制 注意 17.2 使用 Pygal 可视化仓库 python_repos.py 17.2.1 改进 Pygal 图表 python_repos.py 往期快速传送门&#x1f446;&#xff08;在文章最后&#xff09;&#xf…

2 Windows网络编程

1 基础概念 1.1 socket概念 Socket 的原意是“插座”&#xff0c;在计算机通信领域&#xff0c;socket 被翻译为“套接字”&#xff0c;它是计算机之间进行通信的一种约定或一种方式。Socket本质上是一个抽象层&#xff0c;它是一组用于网络通信的API&#xff0c;包括了一系列…

放弃努力必然下滑的2024

知道和做到&#xff0c;这其中有一道鸿沟。 努力不一定会成功&#xff0c;但是不努力连成功的概率都不会有。 问题 之前有朋友看过我的一些博文&#xff0c;问:"我如果不坚持写&#xff0c;仅靠存量能否维持一段时间&#xff1f;" "我如果不坚持写&#xff0c…

Kafka安全认证机制详解之SASL_PLAIN

一、概述 官方文档&#xff1a; https://kafka.apache.org/documentation/#security 在官方文档中&#xff0c;kafka有五种加密认证方式&#xff0c;分别如下&#xff1a; SSL&#xff1a;用于测试环境SASL/GSSAPI (Kerberos) &#xff1a;使用kerberos认证&#xff0c;密码是…

ElasticSearch自定义算分排序(Function Score Query)

使用 function score query&#xff0c;可以修改文档的相关性算分 (query score)&#xff0c;根据新得到的算分排序。 目录 Function Score Query 案例 Function Score Query 几种默认的计算分值的函数&#xff1a; Weight:为每一个文档设置一个简单而不被规范化的权重Fie…

运维工程师的出路到底在哪里?

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;贝叶斯滤波与Kalman估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能&#xff0c…

ORACLE Primavera P6, Unifier v23.12 系统分享

引言 根据上周的计划&#xff0c;我近日简单制作了一个基于ORACLE Primavera P6 EPPM 以及Unifier 最新版23.12的虚拟机演示环境&#xff0c;里面包括了p6 和 unifier的全套系统服务 此虚拟系统环境仅用于演示、培训和测试目的。如要在生产环境中使用此虚拟机&#xff0c;请您…

IPC之十二:使用libdbus在D-Bus上异步发送/接收信号的实例

IPC 是 Linux 编程中一个重要的概念&#xff0c;IPC 有多种方式&#xff0c;本 IPC 系列文章的前十篇介绍了几乎所有的常用的 IPC 方法&#xff0c;每种方法都给出了具体实例&#xff0c;前面的文章里介绍了 D-Bus 的基本概念以及调用远程方法的实例&#xff0c;本文介绍 D-Bus…