• P31 JList列表框


    系统:Win10
    Java:1.8.0_333
    IDEA:2020.3.4
    Gitee:https://gitee.com/lijinjiang01/JavaSwing

    1.概述

    JList:列表框。JList 以列表的形式展示多个选项,允许用户选择一个或多个选项。其中的选项内容由一个 ListModel 实例来维护。JList 不实现直接滚动,需要滚动显示,可以结合 JScrollPane 实现滚动效果。
    JList 常用构造方法:

    /**
     * 一个 JList 实例维护这一个 ListModel 实例。
     * ListModel 实例可以直接创建,也可以通过把 数组 或 集合 传递到 JList 中间接创建。
     */
    JList()
    
    JList(ListModel dataModel)
    
    JList(Object[] listData)
    
    JList(Vector<?> listData)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    JList 选项数据 相关方法:

    // 以数组形式设置选项数据,内部将自动封装成 ListModel
    void setListData(Object[] listData)
    
    // 以集合形式设置选项数据,内部将自动封装成 ListModel
    void setListData(Vector<?> listData)
    
    // 直接设置选项数据的 ListModel
    void setModel(ListModel<?> model)
    
    // 获取维护选项数据的 ListModel。
    // 再通过 listModel.getElementAt(int index) 和 listModel.getSize() 
    // 可分别 获取指定索引的选项数据 和 选项数量。
    ListModel<?> getModel()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    JList 选项选中索引 相关方法:

    // 设置选择模式,有三个模式: 只能单选、可间隔多选、可连续多选
    void setSelectionMode(int selectionMode)
    
    // 设置某个选项选中
    void setSelectedIndex(int index)
    
    // 设置某一些选项选中
    void setSelectedIndices(int[] indices)
    
    // 获取第一个选中的选项索引
    int getSelectedIndex()
    
    // 获取所有选中的选项索引
    int[] getSelectedIndices()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    JList 字体和颜色 相关方法:

    // 设置字体
    void setFont(Font font)
    
    // 设置字体颜色(未选中时)
    void setForeground(Color fg)
    
    // 设置选中选项的字体颜色
    void setSelectionForeground(Color selectionForeground)
    
    // 设置选中条的颜色
    void setSelectionBackground(Color selectionBackground)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    JList 监听器 相关方法:

    // 添加选项选中状态被改变的监听器
    void addListSelectionListener(ListSelectionListener listener)
    
    • 1
    • 2

    2.代码实例

    import com.lijinjiang.beautyeye.BeautyEyeLNFHelper;
    import javax.swing.*;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
    import java.awt.*;
    
    public class Demo01 {
        public static void main(String[] args) {
            try {
                BeautyEyeLNFHelper.frameBorderStyle = BeautyEyeLNFHelper.FrameBorderStyle.generalNoTranslucencyShadow;
                BeautyEyeLNFHelper.launchBeautyEyeLNF();
            } catch (Exception e) {
                e.printStackTrace();
            }
            JFrame frame = new JFrame("Demo01");
            frame.setSize(300, 300);
    
            JPanel panel = new JPanel();
    
            // 创建一个 JList 实例
            final JList<String> list = new JList<String>();
    
            // 设置一下首选大小
            list.setPreferredSize(new Dimension(200, 100));
    
            // 允许可间断的多选
            list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    
            // 设置选项数据(内部将自动封装成 ListModel )
            list.setListData(new String[]{"苹果", "香蕉", "雪梨", "西瓜"});
    
            // 添加选项选中状态被改变的监听器
            list.addListSelectionListener(new ListSelectionListener() {
                @Override
                public void valueChanged(ListSelectionEvent e) {
                    // 获取所有被选中的选项索引
                    int[] indices = list.getSelectedIndices();
                    // 获取选项数据的 ListModel
                    ListModel<String> listModel = list.getModel();
                    // 输出选中的选项
                    for (int index : indices) {
                        System.out.println("选中: " + index + " = " + listModel.getElementAt(index));
                    }
                    System.out.println();
                }
            });
    
            // 设置默认选中项
            list.setSelectedIndex(0);
    
            // 添加到内容面板容器
            panel.add(list);
    
            frame.add(panel);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    3.效果展示

    按住 Ctrl 键可以多选,按住 Shift 键可以连续选择
    在这里插入图片描述

  • 相关阅读:
    STM32CubeMX SDRAM的使用(一)
    计算机毕业设计之java+javaweb的新冠疫情下的校园出入系统
    React框架下如何集成H.265网页流媒体视频播放器EasyPlayer.js?
    动画制作工具Aseprite for mac打造不一样的像素动画风格
    C语言——从头开始——深入理解指针(1)
    应急响应笔记
    【EMC专题】电磁兼容学科的发展
    [附源码]计算机毕业设计springboot汽车美容店管理系统
    代码随想录——图论一刷day02
    Spring Boot 异步线程静态获取request对象为空 RequestContextHolder 为空 Java 异步线程获取request为空
  • 原文地址:https://blog.csdn.net/qq_35132089/article/details/126900452