Java swing系列之JList类(3)

 JList类还有一个以向量为参数的构造函数,类似以下的代码片段:

   Vector<String> v=new Vector<String>();

   v.addElement("中国");

   v.addElement("美国");

    .....

  JList list=new JList(v);

    至此,学习了JLIST类的所有构造方法,下面看看它的方法,JLIST类的方法有多个。包括继承父类的方法大概有三百多个。这么的方法不可能个个都实验到,而且大部分方法都是比较简单的,我们先来看看的它的事件监听器方法。在一般的GUI界面事件处理中,当用户激活界面构件时,它们将发出动作事件,而列表框采取的是另一种事件通知方式,它不需要监听动作事件,而是监听列表项选择事件,它有一个列表选择监听器方法签名为:addListSelectionListener(ListSelectionListener listener),在这个监听器中实现下面这个方法:public void valueChanged(ListSelectionEvent evt).如果用户选择了一个或多个选项时,将产生一系列列表选择事件,下面是一个示例:

import java.awt.BorderLayout;

import javax.swing.AbstractListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
/**
 * 主类
 * @author Administrator
 *
 */

public class MyListModelTest {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		JFrame frame = new ListModelFrame("列表监听事件实例");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}
/**
 * 定义列表模式窗体类,继承自JFrame
 * @author Administrator
 *
 */
@SuppressWarnings("serial")
class ListModelFrame extends JFrame{
	public ListModelFrame(String title)//构造方法
	{
		super(title);//调用父类函数,设置标题
		setSize(350, 150);//设置窗体大小
		final JList wordList;//声明列表对象
		// 文本框控件
		final JTextField textField;
		textField = new JTextField();
		wordList = new JList(new ListModelTest());//定义列表框并设置其模式
		wordList.setVisibleRowCount(4);
		JPanel listPanel = new JPanel();//创建JPanel
		listPanel.add(new JScrollPane(wordList));//将列表插入滚动条
		//列表框默认可以选择多个选项,方法是:按住CTRL健,在要选择的选项上单击。
		  //要连续选择选项,必须选择第一个选项,然后按住SHIFT键,在最后一个选项上单击。
		 
		wordList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //这个设置只能选择一个选项。
		//wordList.setLayoutOrientation(JList.HORIZONTAL_WRAP);//定义布置列表单元的方式,单元按先水平后垂直排列。
		//添加列表框到窗体
		add(listPanel, BorderLayout.CENTER);
		//添加文本框到窗体
		add(textField, BorderLayout.SOUTH);
		//添加列表选择监听器
		
		wordList.addListSelectionListener(new ListSelectionListener(){
			@Override
			public void valueChanged(ListSelectionEvent e)
			{
				StringBuilder str = new StringBuilder("您好,");
				Object valueList[] = wordList.getSelectedValues();//获取选择的内容
				for(int i=0; i<valueList.length; i++)
				{
					String s = (String)valueList[i];
					str.append(s+",");
				}
				str.delete(str.toString().length()-1, str.toString().length());
				str.append("欢迎你!");
				textField.setText(str.toString());
			}
		});
	
	}
}

@SuppressWarnings("serial")
class ListModelTest extends AbstractListModel{
	String[] words={"广东","湖南","湖北","广西","四川","黑龙江",
	"河北","甘肃","宁夏","辽宁","吉林","上海","重庆","北京","河南"};
	@Override
	public int getSize()
	{
		return this.words.length;
	}
	@Override
	public Object getElementAt(int index)
	{
		return this.words[index];
	}
}
源代码包:

点击打开链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

streate

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值