🥁注释很详细,直接上代码
上一篇
🔒新增内容:
🗝️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