Swing中的列表组件

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;
	}
}

实例运行结果如下:

发布了61 篇原创文章 · 获赞 1 · 访问量 1330

猜你喜欢

转载自blog.csdn.net/qq_29440983/article/details/103726371
今日推荐