Java踩坑笔记 —— Swing的JList组件绑定ListSelectionListener事件后会执行两次的解决方案

Java踩坑笔记 —— Java踩坑笔记 —— Swing的JList组件绑定ListSelectionListener事件后会执行两次的解决方案

前言

最近在开发Swing项目途中,使用到了JList组件,并且给组件加上了 ListSelectionListener事件,但是写下相关代码后,会出现事件内执行两次的 BUG出现,经过查阅资料和仔细排查,发现了问题!

解决思路

解决之前 我们需要了解一下ListSelectionListener事件触发回调后的 boolean getValueIsAdjusting()方法。

意思为:鼠标选中点击时为true,释放鼠标后为false

就可以根据自己需求进行更改!

案例代码

ListSelectListener

public class PluginListSelectionEvent implements ListSelectionListener {

    public JList<String> pluginList;
    public Set<String> list;
    /**
     * 插件列表中选择事件
     *
     * @param pluginList 插件列表
     */
    public PluginListSelectionEvent(JList pluginList, Set<String> list){
        this.pluginList = pluginList;
        this.list = list;

    }

    @Override
    public void valueChanged(ListSelectionEvent e) {
//        松下鼠标
        if(!e.getValueIsAdjusting()){
            int [] selectNumber = pluginList.getSelectedIndices();
            ListModel model = pluginList.getModel();
            for(int i : selectNumber){
               list.add(model.getElementAt(i).toString());
            }
        }


    }
}

绑定事件

pluginList.addListSelectionListener(new PluginListSelectionEvent(pluginList,list));

效果图

调试在这里插入图片描述

结束语

Java踩坑笔记 —— Java踩坑笔记 —— Swing的JList组件绑定ListSelectionListener事件后会执行两次的解决方案

  • 如果对你有帮助的话可以给我点赞收藏,十分感谢
  • 致力做学习笔记分享给大家
  • 可以转载 需标明 出处 本文链接。
  • 笔者一个开源项目:我的世界开服助手 希望大家可以点一下star

感谢你的观看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值