java-swing-列表项选择事件监听器

这是一个有关 JList类(列表框实现类)的事件监听

事件名称:ListSelectionEvent 列表选择事件
事件监听接口:ListSelectionListener 监听器 需要实现 valueChanged 方法
事件相关方法:addListSelectionListener 添加选择监听器

现在以 LJist类 创建一个列表框,但选择不同项时,列表框框会做出一些反应

下面是分步骤代码:

需要导入的类:

import javax.swing.event.ListSelectionEvent; //列表选择事件
import javax.swing.event.ListSelectionListener; //监听者
import javax.swing.ListModel;  //在选择一个项时需要用到的类

创建一个列表框,并使用数组向其中添加6个项

JList<String> list1 = new JList<String>();	//创建类表框
String[] data = new String[6];   //一个字符串数组
data[0] = "英雄联盟";   //赋值
data[1] = "王者荣耀";
data[2] = "守望先锋";
data[3] = "绝地求生";
data[4] = "穿越火线";
data[5] = "贪玩蓝月";		
list1.setListData(data);  //添加入列表框

JLabel jlabel1 = new JLabel();//这个标签在触发事件时用于显示

下面是重点,创建列表项选择事件监听器,这是第三种方法,使用一般的命名内部类实现

class myListener implements ListSelectionListener  //创建监听器,实现列表项选择监听接口
{
	@Override
	public void valueChanged(ListSelectionEvent e)  //要重写的方法
	{
		int b = list1.getLeadSelectionIndex(); //保存选中的项的索引(下标)
		jpanel1.add(jlabel1);   //标签添加入面板
		ListModel<String> model = list1.getModel(); //获取列表框的项的模型
		String itemName = model.getElementAt(b);//通过索引获得选中项的名字
		jlabel1.setText("你选择的是:" + itemName);
	}
}
list1.addListSelectionListener(new myListener()); //添加监听器

创建窗口,面板,标签等写太多了就不赘述了。

下面看一下运行结果:
在这里插入图片描述
完整的源代码:

//需要用到的类
import javax.swing.JPanel; //中间容器 (嵌板)最常用的面板
import javax.swing.JLabel;   //标签
import javax.swing.JFrame;   //顶层容器 (框架)
//本列用到的类
import javax.swing.event.ListSelectionEvent; //列表选择事件
import javax.swing.event.ListSelectionListener; //监听者
import javax.swing.ListModel;  //在选择一个项时需要用到的类
import javax.swing.JList; //列表框

public class text_ListSelectionEvent
{
	public static void main(String[] args) 
	{
		JFrame jframe = new JFrame("动作监听");  //窗口
		jframe.setSize(450, 450);   //设置窗口大小
		JPanel jpanel1 = new JPanel();  //面板
		JLabel jlabel1 = new JLabel();  //一个标签	
		JList<String> list1 = new JList<String>();  //列表框
		//设置一下字体
		list1.setFont(new Font("楷体",Font.BOLD,30));    //修改字体样式
		jlabel1.setFont(new Font("楷体",Font.BOLD,30));    //修改字体样式
		
		String[] data = new String[6];   //用数组给列表框增加6个项
		data[0] = "英雄联盟";
		data[1] = "王者荣耀";
		data[2] = "守望先锋";
		data[3] = "绝地求生";
		data[4] = "穿越火线";
		data[5] = "贪玩蓝月";	
		list1.setListData(data);
		//下面是重点
		class myListener implements ListSelectionListener
		{
			@Override
			public void valueChanged(ListSelectionEvent e)
		    {
				int b = list1.getLeadSelectionIndex();
				jpanel1.add(jlabel1);
				ListModel<String> model = list1.getModel();
				String itemName = model.getElementAt(b);
				jlabel1.setText("你选择的是:" + itemName);
			   }
		}
		list1.addListSelectionListener(new myListener()); //添加监视器
		
		jpanel1.add(list1);
		jframe.add(jpanel1);
		
		jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭时操作
		jframe.setVisible(true);   //设置可见
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_44512194/article/details/93402952
今日推荐