前言
最近在开发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哦
感谢你的观看。