【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
英文地址,請注明出處:http://en.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 代理服務器的核心概念、應用場景與實踐…