Java 入門圖形用戶界面設(shè)計(jì)之列表框JList
Java程序設(shè)計(jì) 圖形用戶界面 【十一】列表框JList
列表框JList
JList常用方法
方法 | 作用 |
---|---|
public JList(ListModel dataModel) | 根據(jù)ListModel構(gòu)造JList |
public JList(Object[] listData) | 根據(jù)對(duì)象數(shù)組構(gòu)造JList |
public JList(Vector<?> listData) | 根據(jù)一個(gè)Vector構(gòu)造JList |
public void setSelectionMode(int selectionMode) | 設(shè)置選擇模式,是多選還是單選 |
public ListModel getModel() | 返回列表框的列表模型 |
public int[] getSelectedIndices() | 返回所選擇的全部數(shù)組 |
可以通過(guò)ListSelectionModel接口完成列表框是多選還是單選
ListSelectionModel定義的常量
常量 | 作用 |
---|---|
static final int MULTIPLE_INTERVAL_SELECTION | 一次選擇一個(gè)或多個(gè)連續(xù)的索引范圍 |
static final int SINGLE_INTERVAL_SELECTION | 一次選擇一個(gè)連續(xù)范圍的值 |
static final int SINGLE_SELECTION | 一次選擇一個(gè)值 |
import javax.swing.*; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.Vector; class MyList{ private JFrame frame = new JFrame("一"); private Container cont = frame.getContentPane(); private JList list1 = null; private JList list2 = null; public MyList(){ this.frame.setLayout(new GridLayout(1,3)); String n[] = {"A","B","C","D","E","F"}; Vector<String> v = new Vector<String>(); v.add("A"); v.add("B"); v.add("C"); this.list1 = new JList(n); this.list2 = new JList(v); list1.setBorder(BorderFactory.createTitledBorder("請(qǐng)選擇")); list2.setBorder(BorderFactory.createTitledBorder("請(qǐng)選擇")); list1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); list2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); cont.add(this.list1); cont.add(this.list2); this.frame.setSize(300,200); this.frame.setVisible(true); this.frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { super.windowClosing(e); System.exit(1); } }); } } public class Hello { public static void main(String[] args) { new MyList(); } }
第一個(gè)JList通過(guò)字符串?dāng)?shù)組設(shè)置列表的內(nèi)容,并通過(guò)setSelectionMode()方法設(shè)置一次性可以選擇多個(gè)選項(xiàng)
第二個(gè)JList通過(guò)Vector設(shè)置列表的內(nèi)容,并通過(guò)setSelectionMode()方法將其設(shè)置成每次只能選擇一個(gè)選項(xiàng)
使用ListModel構(gòu)造JList
ListModel是一個(gè)專門用于創(chuàng)建JList列表內(nèi)容操作的接口
方法 | 作用 |
---|---|
void addListDataListener(ListDataListener l) | 加入數(shù)據(jù)改變事件的監(jiān)聽(tīng) |
void removeListDataListener(ListDataListener l) | 加入數(shù)據(jù)刪除時(shí)的監(jiān)聽(tīng) |
Object getElementAt(int index) | 返回指定索引處的內(nèi)容 |
int getSize() | 返回列表長(zhǎng)度 |
import javax.swing.*; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; class MyListModel extends AbstractListModel{ private String n[]={"A","B","C","D"}; @Override public int getSize() { return this.n.length; } public Object getElementAt(int ind){ if(ind<this.n.length){ return this.n[ind]; }else { return null; } } } class MyList{ private JFrame frame = new JFrame("一"); private Container cont = frame.getContentPane(); private JList list1 =null; public MyList(){ this.list1 = new JList(new MyListModel()); list1.setBorder(BorderFactory.createTitledBorder("請(qǐng)選擇")); list1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); cont.add(this.list1); this.frame.setSize(300,200); this.frame.setVisible(true); this.frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { super.windowClosing(e); System.exit(1); } }); } } public class Hello { public static void main(String[] args) { new MyList(); } }
JList事件處理
使用ListSelectionListener的監(jiān)聽(tīng)接口實(shí)現(xiàn)對(duì)JList中所選項(xiàng)的監(jiān)聽(tīng)
ListSelectionListener接口定義的方法
方法 | 作用 |
---|---|
void valueChanged(ListSelectionEvent e) | 當(dāng)值發(fā)生改變時(shí)調(diào)用 |
ListSelectionEvent的常用方法
方法 | 作用 |
---|---|
public int getFirsIndex() | 返回選擇的第1個(gè)選項(xiàng)的索引值 |
public int getLastIndex() | 返回選擇的最后1個(gè)選項(xiàng)的索引值 |
對(duì)JList進(jìn)行監(jiān)聽(tīng)
import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; class MyListModel extends AbstractListModel{ private String n[]={"A","B","C","D"}; @Override public int getSize() { return this.n.length; } public Object getElementAt(int ind){ if(ind<this.n.length){ return this.n[ind]; }else { return null; } } } class MyList implements ListSelectionListener { private JFrame frame = new JFrame("一"); private Container cont = frame.getContentPane(); private JList list1 =null; public MyList(){ this.list1 = new JList(new MyListModel()); list1.setBorder(BorderFactory.createTitledBorder("請(qǐng)選擇")); list1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); list1.addListSelectionListener(this); cont.add(this.list1); this.frame.setSize(300,200); this.frame.setVisible(true); this.frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { super.windowClosing(e); System.exit(1); } }); } @Override public void valueChanged(ListSelectionEvent e) { int temp[] = list1.getSelectedIndices(); System.out.print("選的的內(nèi)容是:"); for(int i:temp){ System.out.print(list1.getModel().getElementAt(i)+","); } System.out.println(); } } public class Hello { public static void main(String[] args) { new MyList(); } }
到此這篇關(guān)于Java 入門圖形用戶界面設(shè)計(jì)之列表框JList的文章就介紹到這了,更多相關(guān)Java 列表框JList內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
HashMap原理及put方法與get方法的調(diào)用過(guò)程
這篇文章主要介紹了HashMap原理及put方法與get方法的調(diào)用過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09SpringBoot整合RabbitMQ 手動(dòng)應(yīng)答(簡(jiǎn)單demo)
這篇文章主要介紹了SpringBoot整合RabbitMQ 手動(dòng)應(yīng)答 簡(jiǎn)單demo,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01SpringBoot調(diào)整ApplicationContextAware如何實(shí)現(xiàn)類加載順序
SpringBoot調(diào)整ApplicationContextAware實(shí)現(xiàn)類加載順序問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05解決mybatis中order by排序無(wú)效問(wèn)題
這篇文章主要介紹了解決mybatis中order by排序無(wú)效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12Java使用@Validated注解進(jìn)行參數(shù)驗(yàn)證的方法
這篇文章主要介紹了Java使用@Validated注解進(jìn)行參數(shù)驗(yàn)證的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08mybatis-plus 查詢時(shí)排除字段方法的兩種方法
我們?cè)陂_(kāi)發(fā)應(yīng)用時(shí),在某些應(yīng)用場(chǎng)景下查詢有時(shí)需要排除某些字段,本文主要介紹了兩種方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09