文章目錄
- 一、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);}
}
執行結果 :