文章目录
- 一、JList 组件简介
- 1、JList 概念简介
- 2、JList 核心作用
- 3、JList 关键特性
- 二、JList 组件基础用法示例
- 1、使用 String 数组构建列表项
- 2、使用 Vector 集合构建列表项
- 3、使用 DefaultListModel 构建列表项
一、JList 组件简介
1、JList 概念简介
基本概念 : JList 组件 是 Java Swing 组件库 中的一员 , 用于显示一个 可滚动 的 列表项集合 ;
允许单选或多选 : JList 允许用户从 预定义的选项 中 选择 单个 或 多个项目 ;
数据内容管理 : JList 不 直接支持 数据 的 添加或删除 , 而是依赖于其 数据模型 ( ListModel ) 来管理列表内容 ;
2、JList 核心作用
JList 核心作用 :
- 数据展示 : 以 列表形式 展示一组数据,支持 文本、图标 等内容的显示 ;
- 用户交互 : 允许用户 通过 点击选择一项或多项 , 需配置选择模式 ;
- 动态绑定 : 通过 ListModel 实现 数据 与 视图 的分离 , 便于动态更新列表内容 ;
3、JList 关键特性
JList 关键特性 :
- 选择模式 : 通过 setSelectionMode() 函数 可以 设置 JList 组件的 单选 ( SINGLE_SELECTION ) 、多选 ( MULTIPLE_INTERVAL_SELECTION ) 等模式 ;
- 渲染器 CellRenderer : 自定义 列表项 的 显示样式 , 如 : 字体、颜色 或 复杂布局 ;
- 事件监听 : 通过 ListSelectionListener 监听 用户选择变化 ;
二、JList 组件基础用法示例
1、使用 String 数组构建列表项
创建一个 数组 作为 JList 数据源 :
String[] data = {"Java", "Python", "C++", "JavaScript"};
将 String 数组 直接设置到 JList 的构造函数中 , 可以在 JList 列表中显示该数组内容 ;
JList<String> list = new JList<>(data);
代码示例 :
import javax.swing.*;public class JListDemo {public static void main(String[] args) {// 使用数组存储 JList 的元素String[] data = {"Java", "Python", "C++", "JavaScript"};// JList 绑定数组JList<String> list = new JList<>(data);// 创建窗口框架并设置标题JFrame frame = new JFrame();frame.setTitle("JList 示例");// 将JList添加到滚动面板中,当列表元素过多时会自动显示滚动条// 然后将滚动面板添加到窗口中frame.add(new JScrollPane(list));// 设置窗口关闭时的操作:EXIT_ON_CLOSE表示关闭窗口时终止程序运行frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置窗口的大小为300像素宽,200像素高frame.setSize(300, 200);// 将窗口设置为可见状态,使其显示在屏幕上frame.setVisible(true);}
}
执行结果 :
2、使用 Vector 集合构建列表项
创建 Vector 集合 , 直接 设置到 JList 构造函数中 ;
// 列表数据源准备Vector<String> vector = new Vector<>();vector.add("Java");vector.add("Python");vector.add("C++");vector.add("JavaScript");// JList 绑定集合数据JList<String> list = new JList<>(vector);
代码示例 :
import javax.swing.*;
import java.util.Vector;public class JListDemo {public static void main(String[] args) {// 列表数据源准备Vector<String> vector = new Vector<>();vector.add("Java");vector.add("Python");vector.add("C++");vector.add("JavaScript");// JList 绑定集合数据JList<String> list = new JList<>(vector);// 创建窗口框架并设置标题JFrame frame = new JFrame();frame.setTitle("JList 示例");// 将JList添加到滚动面板中,当列表元素过多时会自动显示滚动条// 然后将滚动面板添加到窗口中frame.add(new JScrollPane(list));// 设置窗口关闭时的操作:EXIT_ON_CLOSE表示关闭窗口时终止程序运行frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置窗口的大小为300像素宽,200像素高frame.setSize(300, 200);// 将窗口设置为可见状态,使其显示在屏幕上frame.setVisible(true);}
}
执行结果 :
3、使用 DefaultListModel 构建列表项
首先 , 创建一个默认的 列表数据模型 DefaultListModel , 用于存储 JList 列表组件的元素 ;
DefaultListModel<String> model = new DefaultListModel<>();
model.addElement("选项1");
model.addElement("选项2");
然后 , 创建 JList 组件 并将其 与 DefaultListModel 数据模型绑定 , JList 会自动显示模型中的所有元素 ;
JList<String> list = new JList<>(model);
最后 , 设置 列表的选择模式为 单选模式 ListSelectionModel.SINGLE_SELECTION
, 并调用 JList#addListSelectionListener 函数 设置 列表选择时的 触发选项 ;
// 设置列表的选择模式为单选模式(用户只能选择一个选项)// ListSelectionModel.SINGLE_SELECTION 是预定义的单选模式常量list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// 为列表添加选择事件监听器,当用户选择列表中的选项时触发list.addListSelectionListener(e -> {// getValueIsAdjusting() 用于判断选择操作是否正在进行中// 当用户拖动选择多个选项时,该方法会返回true,表示选择尚未最终确定// 添加此判断可以避免在选择过程中多次触发事件处理代码if (!e.getValueIsAdjusting()) {// 获取当前选中的选项并打印输出System.out.println("选中: " + list.getSelectedValue());}});
代码示例 :
import javax.swing.*;public class JListDemo {public static void main(String[] args) {// 创建一个默认的列表数据模型,用于存储JList的元素DefaultListModel<String> model = new DefaultListModel<>();// 向模型中添加第一个选项model.addElement("选项1");// 向模型中添加第二个选项model.addElement("选项2");// 创建JList组件并将其与数据模型绑定,JList会自动显示模型中的所有元素JList<String> list = new JList<>(model);// 设置列表的选择模式为单选模式(用户只能选择一个选项)// ListSelectionModel.SINGLE_SELECTION 是预定义的单选模式常量list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// 为列表添加选择事件监听器,当用户选择列表中的选项时触发list.addListSelectionListener(e -> {// getValueIsAdjusting() 用于判断选择操作是否正在进行中// 当用户拖动选择多个选项时,该方法会返回true,表示选择尚未最终确定// 添加此判断可以避免在选择过程中多次触发事件处理代码if (!e.getValueIsAdjusting()) {// 获取当前选中的选项并打印输出System.out.println("选中: " + list.getSelectedValue());}});// 创建窗口框架并设置标题JFrame frame = new JFrame();frame.setTitle("JList 示例");// 将JList添加到滚动面板中,当列表元素过多时会自动显示滚动条// 然后将滚动面板添加到窗口中frame.add(new JScrollPane(list));// 设置窗口关闭时的操作:EXIT_ON_CLOSE表示关闭窗口时终止程序运行frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置窗口的大小为300像素宽,200像素高frame.setSize(300, 200);// 将窗口设置为可见状态,使其显示在屏幕上frame.setVisible(true);}
}
执行结果 :