Swing中的列表组件

本文详细介绍了Swing中两种列表组件——下拉列表框(JComboBox)和列表框(JList)的使用方法。JComboBox不仅提供选择功能,还支持编辑内容,而JList则适用于展示多个选项,支持多选及滚动显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Swing中提供了两种列表组件,分别是下拉列表框与列表框。列表框较下拉列表框更直观,它将所有的项目罗列在列表框中;但下拉列表框较列表框更为便捷、美观,它将所有的项目隐藏起来,当用户选用其中的项目时才会显现出来。

 

一、下拉列表框组件

1、JComboBox类

初次使用Swing中的下拉列表框时,会感觉到该类下拉列表框与Windows操作系统中的下拉列表框有一些相似,实质上两者并不相同,因为Swing中的下拉列表框不仅可以供用户从中选择项目,也提供编辑项目中内容的功能。

Swing中的下拉列表框使用JComboBox类对象来表示,它时javax.swing.JComponent类的子类,常用的构造方法如下:

(1)public JComboBox()

(2)public JComboBox(ComboBoxModel dataModel)

(3)public JComboBox(Object[] arrayData)

(4)public JComboBox(Vector vector)

 

2、JComboBox模型

在开发程序中,一般将下拉列表框中的项目封装为ComboBoxModel。ComboBoxModel为接口,它代表一般模型,可以自定义一个类实现该接口,然后在初始化JComboBox对象向上转型为ComboBoxModel接口类型,但是必须实现以下两种方法:

(1)public void setSelectedItem(Object item):设置下拉列表框中的选择项

(2)public Object getSelectedItem():返回下拉列表框中的选中项

自定义这个类出来实现该接口之外,还可以继承AbstractListModel类,在该类中有两个操作下拉列表框的重要方法:

(1)getSize():返回列表的长度

(2)getElementAt(int index):返回指定索引处的值

示例如下:

import java.awt.Container;
import java.awt.FlowLayout;

import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.WindowConstants;

public class JComboBoxModelTest extends JFrame{
	JComboBox<String> jc = new JComboBox<String>(new MyComboBox());
	JLabel jl = new JLabel("请选择证件:");
	public JComboBoxModelTest() {
		Container c = getContentPane();
		c.setLayout(new FlowLayout());
		c.add(jl);
		c.add(jc);
		setSize(400,400);
		setVisible(true);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
	}
	public static void main(String args[]) {
		new JComboBoxModelTest();
	}
}
class MyComboBox extends AbstractListModel<String> implements ComboBoxModel<String>{
	String selecteditem = null;
	String[] test = {"身份证","军人证","学生证","工作证"};
	public String getElementAt(int index) {
		return test[index];
	}
	public int getSize() {
		return test.length;
	}
	public void setSelectedItem(Object item) {
		selecteditem = (String)item;
	}
	public Object getSelectedItem() {
		return selecteditem;
	}
}

运行结果如下图所示:

 

二、列表框组件

列表框只是在窗体上占据固定的大小,如果需要列表框具有滚动效果,可以将列表框放入滚动面板中。用户在选择列表框中的某一项时,按住Shift键并选择列表框中的其他项目,则当前选项和其他项目之间的选项全部被选中;也可以按住Ctrl键并单击列表框中的单个项目,实现多选。

Swing中JList类对象来表示列表框,列举如下几个构造方法:

1、public void JList()

2、public void JList(Object[] listData)

3、public void JList(Vector listData)

4、public void JList(ListModel dataModel)

列表框的示例如下:

import java.awt.Container;

import javax.swing.AbstractListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.WindowConstants;

public class JListTest extends JFrame{
	public JListTest() {
		Container c = getContentPane();
		c.setLayout(null);
		JList<String> jl = new JList<String>(new MyListModel());
		JScrollPane js = new JScrollPane(jl);
		js.setBounds(10,10,100,100);
		c.add(js);
		setSize(400,400);
		setVisible(true);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
	}
	public static void main(String args[]) {
		new JListTest();
	}
}
class MyListModel extends AbstractListModel<String>{
	private String[] contents = {"列表1","列表2","列表3","列表4","列表5","列表5"};
	public String getElementAt(int x) {
		if(x<contents.length) {
			return contents[x++];
		}else {
			return null;
		}
	}
	public int getSize() {
		return contents.length;
	}
}

实例运行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值