package zikao.swing;
import javax.swing.*;
import java.awt.*;
public class SplitPaneTest {
/*
使用步骤:
1,使用相关构造方法,创造JSplitPane对象
JSplitPane(int newOrientation ,Component newLeftComponent,Component newRightComponent)
newOrientation: 指定JSplitPane容器的分割方向
如果值为JSplitPane.VERTICAL_SPLIT 垂直分割
如果为JSplitPane.HORIZONTAL_SPLIT 水平分割
newLeftComponent:左侧或者上侧的组件
newLeftComponent:右侧或者下侧的组件
2,是否开启连续布局的支持(可选)
setContinuousLayout(boolean):
3,设置支持是否一触即展的支持(可选)
setOneTouchExpandable(boolean)
4,其它设置:
setDividerLocation(double): 设置分割条的位置为JSplitPane的某个百分比
setDividerLocation(int): 利用像素点来设置分割条的位置
setDividerSize(int): 设置分隔条的粗细
setLeft(Right/Top/Bottom)Component(Component) 设置指定位置的组件
*/
JFrame jFrame = new JFrame("测试JSplitPane");
Book[] books = {new Book("零基础学java", new ImageIcon("FuXi\\java.jpg"), "零基础入门神器")
, new Book("C++ Primer Plus", new ImageIcon("FuXi\\C++.jpg"), "C++高端进阶书籍")
, new Book("Android进阶之光", new ImageIcon("FuXi\\Android.jpg"), "Android进阶必备书籍")
};
JList<Book> bookJList = new JList<>(books);
JLabel bookCover = new JLabel();
JTextArea bookDesc = new JTextArea();
public void init() {
bookJList.setPreferredSize(new Dimension(150, 400));
bookCover.setPreferredSize(new Dimension(220, 270));
bookDesc.setPreferredSize(new Dimension(220, 130));
bookJList.addListSelectionListener(e -> {
//获取当前选中的是哪个条目
Book book = bookJList.getSelectedValue();
//把书籍的图片用bookCover展示
bookCover.setIcon(book.getIcon());
//把书籍的详细介绍放入bookDesc
bookDesc.setText(book.getDesc());
});
//组装左边组件
JSplitPane left = new JSplitPane(JSplitPane.VERTICAL_SPLIT, bookCover, new JScrollPane(bookDesc));
left.setOneTouchExpandable(true);
//组装整体组件
JSplitPane hole = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, left, bookJList);
//支持连续布局
hole.setContinuousLayout(true);
hole.setDividerSize(10);
jFrame.add(hole);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.pack();
jFrame.setVisible(true);
}
public static void main(String[] args) {
new SplitPaneTest().init();
}
}
效果可以看我等下发的B站连接