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);
        }
}
相关推荐
tealcwu7 分钟前
【Unity基础】为什么游戏需要物理按键映射?从 Unity Input Manager 到跨引擎输入设计
java·游戏·unity
vipxieliang21 分钟前
Spring Boot 性能优化实战:从启动加速到运行时调优
java·spring boot
AI全栈学习助手35 分钟前
告别“转圈等待”:Spring Boot + SSE 让大模型像 ChatGPT 一样流式输出
java·人工智能·spring boot·后端·aigc
天天被压力35 分钟前
【A股分钟级高频数据完全手册 #02】Python调用股票1分钟数据接口:Pro版最新分时取数与字段解析
java·人工智能·python
代码不停35 分钟前
Spring Aop
java·数据库·spring
道尔柯南1 小时前
C++ STL 入门详解:从认识标准模板库到掌握学习方法
java·c++·学习方法
杨凯凡1 小时前
Spring Boot 4 升级为什么卡在 Jackson 3?包名、配置与兼容迁移指南
java·spring boot 4·技术升级·jackson 3·spring framework
天天被压力1 小时前
【A股分钟级高频数据完全手册 #01】Pro版接口体系总览与REST鉴权:42篇地图与从0接入
java·人工智能·python
xyouyuweizhu1 小时前
Java InetAddress 详解:从 IP 地址表示到主机名解析
java·开发语言·python
AI你一生一世10 小时前
不止于时序存储:DolphinDB 如何成为 AI 时代的工业智能底座
java·人工智能·struts·时序数据库·工业智能·dolphindb·ai基础设施