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

发布时间:2024年01月03日

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

🔒新增内容:
🗝?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方法
    @Override
    public 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() {
            //当列表项被选中时
            @Override
            public 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
请添加图片描述
请添加图片描述

请添加图片描述

文章来源:https://blog.csdn.net/m0_73756108/article/details/135307126
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。