Java学习——68、列表框JList

之前介绍的单选按钮,复选框一般用在数据项比较少的情况下。

如果可供选择的数据项较多,通常用列表框或组合框,本篇介绍列表框。

1、  JList列表框

列表框可以显示一组数据项,从中可选择一个或多个。

其类名JList,声明如下:

public class JList extends JComponent implements Scrollable, Accessible//列表框类

{

public JList(T items[]) //由对象数组提供数据项

public JList(ListModel listmodel) //指定列表框模型

public void setSelectedIndex(inti) //选中第i(≥0)项

public int getSelectedIndex()//返回首个选中项序号

public T getSelectedValue()//返回首个选中项对象

public void addListSelectionListener(ListSelectionListenerl)//注册列表框选择事件监听器

}

2、列表框模型

列表框里的数据项由列表框模型存储并管理,类名为ListModel,声明如下:

public class DefaultListModel extends AbstractListModel

{

public DefaultListModel()

public int getSize()//返回列表框的数据项数

public T getElementAt(inti) //返回序号为i的组件

public void setElementAt(T item, int i) //设置序号为i的组件为item

public int indexOf(Object item) //返回item首次出现位置

public void insertElementAt(T item, int i) //在i处插入item数据项

public void addElement(T item)  //添加item数据项

public void removeElementAt(inti) //删除序号为i的数据项

public boolean removeElement(T item) //删除首次出现的item项

public void removeAllElements()//删除所有数据项

}

3、列表框选择事件

选中列表框中的数据项,将触发列表框选择事件ListSelectionEvent,其监听器接口名为:ListSelectionListener。

其中包含的方法只有一个:

public interface ListSelectionListener extends EventListener//列表框选择事件监听器接口

{

public abstract void valueChanged(ListSelectionEvent ev); //列表框选择事件处理方法

}

注册该事件监听器的方法是:

addListSelectionListener(ListSelectionListenerlistener);

4、简单例题

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.event.*;

public class JlistLearn extendsJFrame implements ListSelectionListener{

JList list;

JTextArea text;

public JlistLearn() {

super("列表框学习");

this.setVisible(true);

this.setSize(300, 300);

this.setLocationRelativeTo(null);

Strings[]= {"北京市","重庆市","云南省","四川省","湖南省","广东省","福建省","香港"};//列表框中的数据项,以数组方式存储

DefaultListModel model=new DefaultListModel();//列表框模型

for(inti=0;i<s.length;i++) {

model.addElement(s[i]);//将数据项加入到列表框模型中

}

list=new JList(model);//以模型创建列表框

this.getContentPane().add(list);

list.addListSelectionListener(this);//注册事件监听器

text=new JTextArea();

this.getContentPane().add(text,"South");

}

public void valueChanged(ListSelectionEvent ev) {

text.setText("您选中的是:"+list.getSelectedValue().toString());

text.append("\n序号为:"+list.getSelectedIndex());

if(list.getSelectedValue().equals("云南省"))

text.append("\n云南省有昆明市、曲靖市、楚雄州\n请问您是哪里的呢?");

}

public static void main(String argsp[]) {

new JlistLearn();

}

}

其运行结果如下:

当选中其中一项时,会触发valueChanged事件,如本例中,选中北京市的运行结果如下:

如果选中云南省,根据valueChanged方法,会在文本区中增加两行文字,运行结果如下所示:

注:getSelectedIndex()方法得到的序号是从0开始的。所以在本例是,北京市的序号为0,云南省的序号为2。

(0)

相关推荐