java - getValueIsAdjusting() 在 JList 中禁用,但现在我无法连续两次选择一个选项

标签 java jlist listselectionlistener

我有一个 JList,其中每个选项都会递增一个变量并执行一些其他简单的操作。我的 ListSelectionListener 使用鼠标在每次选择时运行两次,因此我设置了条件 if(!getValueIsAdjusting()) 在每次点击选择时在监听器内运行我的代码一次。现在,例如,一旦我选择选项 1,它就会运行良好,但如果我想再次选择此选项,则什么也不会发生。所以基本上我不能连续两次选择相同的选项。 (如果我回到之前选择的选项是没有问题的)。欢迎任何解决方案。提前致谢

最佳答案

我找到了解决该问题的方法,想与大家分享。 在完成 valueChanged 方法内的操作后,我调用该方法 clearSelection()。这会将所选索引设置为 -1。为了处理由此产生的错误,我在 if 条件中添加了 getSelectedIndex()>=0。所以代码:

private class KategoriHandler implements ListSelectionListener{    
public void valueChanged(ListSelectionEvent e) {                if(!e.getValueIsAdjusting()&&kategori.getSelectedIndex()>=0){
//do the stuff;
kategori.clearSelection();}

关于java - getValueIsAdjusting() 在 JList 中禁用,但现在我无法连续两次选择一个选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34431696/

相关文章:

Java GUI 将布局放置在 boxlayout 下

java - 带有 JScrollPane 和原型(prototype)单元格值的 JList 包裹元素名称(用点替换而不是显示水平滚动条),为什么?

java - 如何使用不同类的信息更新 JPanel?

java - 如何将两个不同的对象添加到一个对象中

java - Servlet作为文件下载,而不是在tomcat上呈现HTML

java - 当我在 scala 中运行删除查询时没有任何反应

java - JList 找出哪个项目被点击

java - 自定义 ScrollPane 的绘画问题

java - 在 for 循环外部的函数中使用来自 for 循环的值

java - 如何制作删除按钮来删除JTable中的行?