🥁注释很详细,直接上代码
🚨完整代码:
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