【Java Swing 图形界面编程】JList 列表组件 ① ( JList 组件简介 | 核心作用 | 关键特性 | 基础用法示例 )

文章目录

  • 一、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);}
}

执行结果 :

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/912725.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/912725.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【小技巧】Python+PyCharm IDE 配置解释器出错,环境配置不完整或不兼容。(小智AI、MCP、聚合数据、实时新闻查询、NBA赛事查询)

报错信息如下&#xff1a; [unsupported] Python 3.1 (mcp-calculator-main) (3) C:\Users(xsshu\AppData\Local\Programs\Python\Python313\python.exe [unsupported] Python 3.1 C:\Users\xsshu\AppData\Local\Programs\Python\Python311\python.exe 这条输出显示了两个 Pyth…

Ragflow 前后端登录逻辑

前端登录逻辑 路由配置&#xff1a; /login 路由指向 /pages/login 组件。登录表单使用 Ant Design 的 Form, Input, 和 Button 组件。 登录表单处理&#xff1a; 使用 useLogin钩子来处理登录请求。密码通过 RSA 加密后再发送到服务器。成功登录后导航至 /knowledge 页面。 …

基于图神经网络的ALS候选药物预测模型设计与实现

基于图神经网络的ALS候选药物预测模型设计与实现 一、任务背景与意义 肌萎缩侧索硬化症(ALS)是一种致命的神经退行性疾病,目前尚无有效治愈方法。传统药物发现流程耗时长、成本高,而人工智能技术为加速药物发现提供了新途径。本文设计并实现了一个基于图神经网络(GNN)的…

运维打铁: 数据加密与备份恢复策略制定

文章目录 思维导图一、数据加密1. 加密算法选择AES 加密示例&#xff08;Python&#xff09;RSA 加密示例&#xff08;Python&#xff09; 2. 密钥管理3. 加密范围 二、数据备份1. 备份类型全量备份增量备份差异备份 2. 备份频率3. 备份存储位置 三、数据恢复1. 恢复测试2. 恢复…

AIbase MCP服务库上线:集成服务器、客户端、案例教程等服务

在当今数字化时代&#xff0c;人工智能技术正以前所未有的速度发展&#xff0c;深刻地改变着我们的生活和工作方式。而要充分发挥AI的强大能力&#xff0c;离不开高效的工具和服务支持。今天&#xff0c;就让我们来了解一下一个专注于MCP&#xff08;Model Context Protocol&am…

QGIS+CesiumIon

前言 QGIS 3.44中&#xff0c;新增了3D 场景新增地球视图模式&#xff0c;通过Cesium ion插件&#xff0c;支持谷歌全球倾斜模型的加载显示。 目录 1 CesiumIon插件安装 2 加载谷歌全球倾斜模型 1、CesiumIon插件安装 点击菜单【Plugins】->【Manage and Install Plugins】…

TEXT Introduction

我们是谁 美国计算机奥林匹克竞赛通过培训、竞赛和国际比赛来促进大学前的计算机学习。 数个教练将会组织、领导、陪伴代表美国参加国际性奥林匹克竞赛的学生。 你可以在 USACO 官网了解更多。 USACO 的目标 USACO 的具体目标包括&#xff1a; 训练美国的队伍并且在下一届奥…

Fluent许可服务器设置教程

Fluent作为一款广泛使用的流体动力学模拟软件&#xff0c;其高效的许可管理系统是确保顺畅运行的关键。为了帮助您更好地掌握Fluent许可服务器的设置方法&#xff0c;本文将为您提供一份详细的设置教程&#xff0c;让您轻松配置&#xff0c;高效运行Fluent软件。 一、Fluent许可…

vue3中实现高德地图POI搜索(附源码)

引言 上一篇文章详细讲解了vue3中实现高德地图地址搜索自动提示&#xff08;附源码&#xff09;&#x1f517;&#xff0c;本文将重点介绍POI搜索功能的实现。 1. 功能介绍 POI(Point of Interest) 搜索用于查找特定位置或区域内的兴趣点&#xff0c;如餐馆、商场、景点等。…

机器学习在计算机视觉中的应用

引言 计算机视觉&#xff08;Computer Vision&#xff09;是人工智能的重要分支&#xff0c;旨在让计算机像人类一样“看懂”图像和视频。近年来&#xff0c;随着深度学习&#xff08;Deep Learning&#xff09;的快速发展&#xff0c;计算机视觉在多个领域取得了突破性进展。…

新手向:从零开始Node.js超详细安装、配置与使用指南

什么是Node.js&#xff1f; 简单来说&#xff1a; Node.js 是一个在服务器端运行 JavaScript 的环境。 以前JavaScript只能做网页特效&#xff0c;现在用它就能开发网站后台、命令行工具甚至桌面应用&#xff01; 第一步&#xff1a;安装Node.js&#xff08;多系统详解&#x…

VR全景平台的概念和用途

VR全景平台&#xff1a;沉浸式体验篇章 在数字化飞速发展的今天&#xff0c;VR全景平台作为新兴的技术应用平台&#xff0c;逐渐走进我们的日常生活。那么&#xff0c;什么是VR全景平台&#xff1f;众趣科技是否有涉足这一领域&#xff1f;众趣科技VR全景平台又具备哪些独特的…

深入解析外观模式(Facade Pattern):简化复杂系统的优雅设计

深入解析外观模式&#xff08;Facade Pattern&#xff09;&#xff1a;简化复杂系统的优雅设计 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 总有一行代码&#xff0c;能点亮万千星辰。 &#x1f50d; 在技术的宇宙中&#xff0c;我愿做永不停歇…

2.2.1 配置Linux审计日志

文章目录 一、试题及考试说明二、操作步骤1. 启动 Auditd 服务并设置其开机自启2. 创建一个规则来监控/etc/test/auditd_test 文件上的所有写入操作&#xff0c;并给这些审计记录加上标签file_access3. 设置审计日志保存在/etc/test/audit/audit.log4. 设置审计日志的滚动机制&…

使用Puppeteer提取页面内容的技巧

在现代的Web开发和爬虫开发中&#xff0c;Puppeteer是一个非常强大的工具&#xff0c;它可以帮助我们自动化浏览器操作&#xff0c;提取页面内容。本文将从初阶到高阶&#xff0c;详细介绍如何使用Puppeteer提取页面内容的各种技巧&#xff0c;特别关注多层类关系选择器的使用。…

SQL server 获取表中所有行的序号

在SQL Server中&#xff0c;要获取某个表中的某一行所在的记录总数&#xff0c;通常有几种方法可以实现&#xff0c;具体使用哪种方法取决于你的具体需求。以下是几种常见的方法&#xff1a; 1. 使用COUNT()函数结合子查询 如果你想要知道某个特定行在表中的位置&#xff08;…

《CSDN 用户视角:见证 AI 重构企业办公,在智能协同、数据驱动下实现组织进化》

在数字化转型的大潮汹涌而至的当下&#xff0c;人工智能&#xff08;AI&#xff09;宛如一场疾风骤雨&#xff0c;以前所未有的速度重塑着企业办公的格局。从琐碎流程的自动化&#xff0c;到智能决策的深度赋能&#xff0c;AI 技术正掀起一场对传统工作模式的彻底颠覆&#xff…

PYQT实战:天气助手

应用采用了现代化的界面设计&#xff0c;包括圆角边框、卡片式布局和响应式建议功能。 这个天气应用可以作为学习PyQt5开发的实例&#xff0c;展示了GUI设计、定时更新、数据处理和用户交互的实现方法 #!/usr/bin/env python # -*- coding: GBK -*- import sys import request…

PL-SLAM: Real-Time Monocular Visual SLAM with Points and Lines

PL-SLAM 文章目录 PL-SLAM摘要系统介绍综述方法综述LINE-BASED SLAM一、基于线的SLAM二、基于线和点的BA三、全局重定位使用线条初始化地图实验结果说明位姿求解三角化LSD 直线检测算法📊 **一、核心原理**⚙️ **二、实现方法**📐 **三、应用场景**⚖️ **四、优缺点与优化…

快速手搓一个MCP服务指南(八):FastMCP 代理服务器:构建灵活的 MCP 服务中介层

在分布式系统和微服务架构日益普及的今天&#xff0c;服务间的通信与集成变得至关重要。FastMCP 从 2.0.0 版本引入的代理服务器功能&#xff0c;为 MCP (Model Context Protocol) 生态提供了强大的服务中介能力。本文将深入解析 FastMCP 代理服务器的核心概念、应用场景与实践…