swing快速入门(三十六)分割面板
2024-01-03 09:33:38
🥁注释很详细,直接上代码
🔒新增内容:
🗝?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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!