javafx-在listview中添加了点击事件后会执行多次

现象

我在一个按钮的点击事件中添加了,点击事件的监听如下,就会造成我多次点击按钮后,里面打开浏览器会执行多次

java 复制代码
  listviewitemListener = new ChangeListener() {
      @Override
      public void changed(ObservableValue observable, Object oldValue, Object newValue) {
          int start = 0;
          String numStr = null;
          String valuesStr = newValue.toString();
          String[] strArray = valuesStr.split(":");
          valuesStr = strArray[1];
          numStr = valuesStr.substring(0, 8);
          if (Integer.valueOf(numStr) > 0) {
              String finalNumStr = numStr;
              Platform.runLater(new Runnable() {
                  @Override
                  public void run() {
                      String path = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe";
                      String target = "https://xxxx=" + finalNumStr;
                      List<String> cmd = new ArrayList<String>();
                      cmd.add(path);
//                            cmd.add("--start-maximized");// 窗口启动最大化
//                            cmd.add("--incognito");// 隐身模式打开
//                            cmd.add("--user-data-dir=D:/test");
                      cmd.add(target);
                      ProcessBuilder process = new ProcessBuilder(cmd);
                      try {
                          process.start();
                      } catch (IOException e) {
                          e.printStackTrace();
                      }
                  }
              });
          }
      }
  };

  infoLV.getSelectionModel().selectedItemProperty().addListener(listviewitemListener);

解决方法

先把listener设置为类的属性,开始设置为null,然后在按钮点击的时候判断不为null的时候remove这个listener就可以了

java 复制代码
private ChangeListener listviewitemListener=null;


@FXML
void check(ActionEvent event)  {
        if(listviewitemListener!=null){
            infoLV.getSelectionModel().selectedItemProperty().removeListener(listviewitemListener);
        }
}
相关推荐
basketball6165 分钟前
C++ 强制类型转换:从 C 风格到 C++ 四大金刚
java·c语言·c++
Dicky-_-zhang26 分钟前
容器网络CNI实战:从零搭建网络插件
java·jvm
Mahir0828 分钟前
Spring 事务深度解析:核心原理与 12 种事务失效场景全解
java·spring·面试·事务失效
SL_staff30 分钟前
从Zoom/腾讯会议迁移到私有化会议系统:数据迁移完整方案
java·架构
笨蛋不要掉眼泪32 分钟前
Java并发编程:内存可见性与synchronized同步机制
java·开发语言·并发
用户39599249400633 分钟前
Java开发者接入大模型API实战:从0到聊天机器人
java
JAVA面经实录91743 分钟前
Java 多线程完整版学习文档(无遗漏终版)
java·面试
考虑考虑1 小时前
JDK26中的LazyConstant
java·后端·java ee
Devin~Y1 小时前
互联网大厂 Java 面试实录:JVM、Spring Boot、MyBatis、Redis、Kafka、Spring AI、K8s 全链路追问小Y
java·jvm·spring boot·redis·kafka·mybatis·spring security
摇滚侠1 小时前
SpringCloud 面试题 真正的 offer 偏方 Java 基础 Java 高级
java·spring·spring cloud