JavaFX ObservableList监听,可应用于监听子节点的变化

64 篇文章 12 订阅
	Callback<ObservableMap<String, ObservableValue>, Observable[]> extractor = new                  Callback<ObservableMap<String, ObservableValue>, Observable[]>() {
        @Override
        public Observable[] call(ObservableMap<String, ObservableValue> param) {
            List<ObservableValue> ObservableList = new ArrayList<>(param.values());
            Observable arr[] = new Observable[ObservableList.size()];
            return ObservableList.toArray(arr);
        }
    };

	ObservableList<ObservableMap<String, ObservableValue>><ObservableMap<String,ObservableValue>> nodesList = = FXCollections.observableArrayList(extractor);
	ObservableMap<String, ObservableValue> map = FXCollections.observableHashMap();
	// map操作略
	nodesList.add(map);
	nodesList.addListener(createListChangeListener(poiMapLayer));
			
	private ListChangeListener<ObservableMap<String,ObservableValue>> createListChangeListener(PoiMapLayer poiMapLayer){
		ListChangeListener<ObservableMap<String,ObservableValue>> result = new ListChangeListener<ObservableMap<String,ObservableValue>>() {
			@Override
			public void onChanged(Change<? extends ObservableMap<String, ObservableValue>> change) {
				while (change.next()) {
					if (change.wasPermutated()) {
						// 重新排列
					} else if (change.wasUpdated()) {
						// 更改
					} else if (change.wasReplaced()) {
					// 被替换
						// 删除
						List<? extends ObservableMap<String, ObservableValue>> removeList = change.getRemoved();
						for (ObservableMap<String, ObservableValue> observableMap : removeList) {
							map的value类型 map的value = (map的value类型)observableMap.get("map的key").getValue();
						}
						// 添加
						List<? extends ObservableMap<String, ObservableValue>> addList = change.getAddedSubList();
						for (ObservableMap<String, ObservableValue> observableMap : addList) {
						}
					} else {
						if (change.wasRemoved()) {
							// 删除
							List<? extends ObservableMap<String, ObservableValue>> removeList = change.getRemoved();
							for (ObservableMap<String, ObservableValue> observableMap : removeList) {
							}
						} else if (change.wasAdded()) {
							// 添加
							List<? extends ObservableMap<String, ObservableValue>> addList = change.getAddedSubList();
							for (ObservableMap<String, ObservableValue> observableMap : addList) {
							}
						}
					}
				}
			}	
		};
		
		return result;
	}

推荐:https://www.kutu66.com//Java_API_Classes/article_65500

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风铃峰顶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值