这是一个有关 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); //设置可见
}
}