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);
        }
}
相关推荐
聊浮游29 分钟前
JAVA2026最新全套学习资料、学习路线
java·开发语言·jvm·mysql·spring·maven·idea
MacroZheng41 分钟前
完美替代 Navicat!这款内置 AI 的数据库工具,太香了!
java·后端·mysql
SamDeepThinking1 小时前
从REST到gRPC,一个API选型的思考框架
java·后端·程序员
Zane19941 小时前
接口都能写默认实现了,为什么还需要抽象类
java·后端
未秃头的程序猿1 小时前
读Spring AI源码的方法——不是硬啃,是带着问题去翻
java·后端·spring
用户3126874877201 小时前
别再 Thread.sleep 硬等了!并发工具类到底怎么选?
java
Java内核笔记1 小时前
万字长文剖析 Spring Boot 4 自动配置机制源码:从 @EnableAutoConfiguration 到条件装配
java·后端
evans在进步2 小时前
Spring MVC 核心机制详解:全局异常处理、请求跳转与数据绑定
java·spring·mvc
weixin_BYSJ19872 小时前
springboot小区物业管理小程序---附源码45555
java·javascript·spring boot·python·django·flask·php
coder_lorraine2 小时前
Halo 2.x 回收站文章无法删除?一篇文章教你彻底解决
java·运维