Swing的特殊容器JSplitPane布局分割

2021-11-29  本文已影响0人  开心的小哈
package test.object;

import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class TextMain {

    public static void main(String[] args) {
        new TextMain().init();
    }

    public void init() {
        Book[] book = {
                new Book("JAVA自学宝典", new ImageIcon("D:\\Image\\1631942921354.gif"), "这是一本编程好书,国内关于java的好书\n看得懂,学得会"),
                new Book("轻量级JAVAEE企业应用实战", new ImageIcon("D:\\Image\\1634200844888.jpg"), "SMM整合开发的经典图书,值得拥有"),
                new Book("轻量级web企业应用实战", new ImageIcon("D:\\Image\\1631942921354.gif"),
                        "这是一本编程好书,国内关于java的好书\n看得懂,学得会"),
                new Book("轻量级dddd企业应用实战", new ImageIcon("D:\\Image\\1635245599465.gif"), "SMM整合开发的经典图书,值得拥有") };
        JFrame jFrame = new JFrame();
        // 生命组件
        JList<Book> list = new JList<>(book);

        JLabel booCover = new JLabel();

        JTextArea jTextArea = new JTextArea();

        list.setPreferredSize(new Dimension(150, 400));
        booCover.setPreferredSize(new Dimension(220, 270));
        jTextArea.setPreferredSize(new Dimension(220, 130));

        list.addListSelectionListener(new ListSelectionListener() {

            @Override
            public void valueChanged(ListSelectionEvent e) {
                // 获取当前选中的是那个项目
                Book book = list.getSelectedValue();
                // 把书记的图片用bookCover展示
                booCover.setIcon(book.getIcon());

                // 把书籍的描述用bookDesc展示
                jTextArea.setText(book.getDesc());

            }
        });

        // 组装左视图
        JSplitPane jSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, booCover, new JScrollPane(jTextArea));
        // 支持一触即展特性
        jSplitPane.setOneTouchExpandable(true);
        // 组装整体
        JSplitPane jSplitPane2 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jSplitPane, list);
        // 支持连续布局(连续刷新布局)
        jSplitPane2.setContinuousLayout(true);

        jFrame.add(jSplitPane2);
        jFrame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        jFrame.pack();
        jFrame.setVisible(true);

    }

    BufferedImage image;

    class MyImage extends Canvas {

        @Override
        public void paint(Graphics g) {
            g.drawImage(image, 0, 0, null);
        }

    }
}

image.png
上一篇下一篇

猜你喜欢

热点阅读