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ù)組 |
可以通過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通過字符串?dāng)?shù)組設(shè)置列表的內(nèi)容,并通過setSelectionMode()方法設(shè)置一次性可以選擇多個(gè)選項(xiàng)
第二個(gè)JList通過Vector設(shè)置列表的內(nèi)容,并通過setSelectionMode()方法將其設(shè)置成每次只能選擇一個(gè)選項(xiàng)
使用ListModel構(gòu)造JList
ListModel是一個(gè)專門用于創(chuàng)建JList列表內(nèi)容操作的接口
| 方法 | 作用 |
|---|---|
| void addListDataListener(ListDataListener l) | 加入數(shù)據(jù)改變事件的監(jiān)聽 |
| void removeListDataListener(ListDataListener l) | 加入數(shù)據(jù)刪除時(shí)的監(jiān)聽 |
| Object getElementAt(int index) | 返回指定索引處的內(nèi)容 |
| int getSize() | 返回列表長度 |
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)聽接口實(shí)現(xiàn)對(duì)JList中所選項(xiàng)的監(jiān)聽
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)聽
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)文章
Java使用jxl包寫Excel文件適合列寬實(shí)現(xiàn)
用jxl.jar包,讀寫過Excel文件。也沒有注意最適合列寬的問題,但是jxl.jar沒有提供最適合列寬的功能,上次用到寫了一下,可以基本實(shí)現(xiàn)最適合列寬。2013-11-11
ThreadPoolExecutor核心線程數(shù)和RocketMQ消費(fèi)線程調(diào)整詳解
這篇文章主要介紹了ThreadPoolExecutor核心線程數(shù)和RocketMQ消費(fèi)線程調(diào)整詳解,Rocketmq 消費(fèi)者在高峰期希望手動(dòng)減少消費(fèi)線程數(shù),通過DefaultMQPushConsumer.updateCorePoolSize方法可以調(diào)用內(nèi)部的setCorePoolSize設(shè)置多線程核心線程數(shù),需要的朋友可以參考下2023-10-10
解決SpringBoot項(xiàng)目使用多線程處理任務(wù)時(shí)無法通過@Autowired注入bean問題
這篇文章主要介紹了SpringBoot項(xiàng)目使用多線程處理任務(wù)時(shí)無法通過@Autowired注入bean問題的解決方法,需要的朋友可以參考下2018-09-09
SpringBoot整合MyBatis逆向工程及 MyBatis通用Mapper實(shí)例詳解
這篇文章主要介紹了SpringBoot整合MyBatis逆向工程及 MyBatis通用Mapper實(shí)例詳解 ,需要的朋友可以參考下2017-09-09
Mybatis中自定義實(shí)例化SqlSessionFactoryBean問題
這篇文章主要介紹了Mybatis中自定義實(shí)例化SqlSessionFactoryBean問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
Java實(shí)戰(zhàn)之吃貨聯(lián)盟訂餐系統(tǒng)
這篇文章主要介紹了Java實(shí)戰(zhàn)之吃貨聯(lián)盟訂餐系統(tǒng),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
springboot啟動(dòng)加載CommandLineRunner @PostConstruct問題
這篇文章主要介紹了springboot啟動(dòng)加載CommandLineRunner @PostConstruct問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08

