Java Swing JList列表框的實(shí)現(xiàn)
1. 概述
官方JavaDocsApi: javax.swing.JList
JList,列表框。JList 以列表的形式展示多個(gè)選項(xiàng),允許用戶選擇一個(gè)或多個(gè)選項(xiàng)。其中的選項(xiàng)內(nèi)容由一個(gè) ListModel 實(shí)例來維護(hù)。JList 不實(shí)現(xiàn)直接滾動(dòng),需要滾動(dòng)顯示,可以結(jié)合 JScrollPane 實(shí)現(xiàn)滾動(dòng)效果。
JList 常用構(gòu)造方法:
/** * 一個(gè) JList 實(shí)例維護(hù)這一個(gè) ListModel 實(shí)例。 * ListModel 實(shí)例可以直接創(chuàng)建,也可以通過把 數(shù)組 或 集合 傳遞到 JList 中間接創(chuàng)建。 */ JList() JList(ListModel dataModel) JList(Object[] listData) JList(Vector<?> listData)
JList 選項(xiàng)數(shù)據(jù) 相關(guān)方法:
// 以數(shù)組形式設(shè)置選項(xiàng)數(shù)據(jù),內(nèi)部將自動(dòng)封裝成 ListModel void setListData(Object[] listData) // 以集合形式設(shè)置選項(xiàng)數(shù)據(jù),內(nèi)部將自動(dòng)封裝成 ListModel void setListData(Vector<?> listData) // 直接設(shè)置選項(xiàng)數(shù)據(jù)的 ListModel void setModel(ListModel<?> model) // 獲取維護(hù)選項(xiàng)數(shù)據(jù)的 ListModel。 // 再通過 listModel.getElementAt(int index) 和 listModel.getSize() // 可分別 獲取指定索引的選項(xiàng)數(shù)據(jù) 和 選項(xiàng)數(shù)量。 ListModel<?> getModel()
JList 選項(xiàng)選中索引 相關(guān)方法:
// 設(shè)置選擇模式,有三個(gè)模式: 只能單選、可間隔多選、可連續(xù)多選 void setSelectionMode(int selectionMode) // 設(shè)置某個(gè)選項(xiàng)選中 void setSelectedIndex(int index) // 設(shè)置某一些選項(xiàng)選中 void setSelectedIndices(int[] indices) // 獲取第一個(gè)選中的選項(xiàng)索引 int getSelectedIndex() // 獲取所有選中的選項(xiàng)索引 int[] getSelectedIndices()
JList 字體和顏色 相關(guān)方法:
// 設(shè)置字體 void setFont(Font font) // 設(shè)置字體顏色(未選中時(shí)) void setForeground(Color fg) // 設(shè)置選中選項(xiàng)的字體顏色 void setSelectionForeground(Color selectionForeground) // 設(shè)置選中條的顏色 void setSelectionBackground(Color selectionBackground)
JList 監(jiān)聽器 相關(guān)方法:
// 添加選項(xiàng)選中狀態(tài)被改變的監(jiān)聽器 void addListSelectionListener(ListSelectionListener listener)
2. 代碼實(shí)例
package com.xiets.swing; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import java.awt.*; public class Main { public static void main(String[] args) { JFrame jf = new JFrame("測試窗口"); jf.setSize(300, 300); jf.setLocationRelativeTo(null); jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); JPanel panel = new JPanel(); // 創(chuàng)建一個(gè) JList 實(shí)例 final JList<String> list = new JList<String>(); // 設(shè)置一下首選大小 list.setPreferredSize(new Dimension(200, 100)); // 允許可間斷的多選 list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); // 設(shè)置選項(xiàng)數(shù)據(jù)(內(nèi)部將自動(dòng)封裝成 ListModel ) list.setListData(new String[]{"香蕉", "雪梨", "蘋果", "荔枝"}); // 添加選項(xiàng)選中狀態(tài)被改變的監(jiān)聽器 list.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { // 獲取所有被選中的選項(xiàng)索引 int[] indices = list.getSelectedIndices(); // 獲取選項(xiàng)數(shù)據(jù)的 ListModel ListModel<String> listModel = list.getModel(); // 輸出選中的選項(xiàng) for (int index : indices) { System.out.println("選中: " + index + " = " + listModel.getElementAt(index)); } System.out.println(); } }); // 設(shè)置默認(rèn)選中項(xiàng) list.setSelectedIndex(1); // 添加到內(nèi)容面板容器 panel.add(list); jf.setContentPane(panel); jf.setVisible(true); } }
結(jié)果展示:
點(diǎn)擊選項(xiàng)(按住 Ctrl 鍵可多選),查看控制臺輸出。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot 如何使用 JWT 保護(hù) Rest Api&nbs
使用spring-boot開發(fā)RESTful API非常的方便,在生產(chǎn)環(huán)境中,對發(fā)布的 API 增加授權(quán)保護(hù)是非常必要的,現(xiàn)在我們來看如何利用JWT技術(shù)為API 增加授權(quán)保護(hù),保證只有獲得授權(quán)的用戶才能夠訪問 API,感興趣的朋友跟隨小編一起看看吧2024-02-02Quarkus中RESTEasy?Reactive集成合并master分支
這篇文章主要為大家介紹了Quarkus中RESTEasy?Reactive集成合并master分支的詳細(xì)作用分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02如何在Maven項(xiàng)目中運(yùn)行JUnit5測試用例實(shí)現(xiàn)
這篇文章主要介紹了如何在Maven項(xiàng)目中運(yùn)行JUnit5測試用例實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04Mybatis查詢時(shí)數(shù)據(jù)丟失的問題及解決
Mybatis查詢時(shí)數(shù)據(jù)丟失的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01