表示对Observablelist进行的更改的报告。

更改可能包含一个或多个实际更改,并且必须由next()方法迭代。

每个更改必须是以下之一:

在这种情况下, 排列变化 : wasPermutated()返回true。

添加或删除的变化 :在这种情况下,至少一个wasAdded() , wasRemoved()返回true。 如果两个方法都返回true, 那么wasReplaced()也将返回true。

getRemoved()方法返回已从列表中替换或删除的元素列表。

from (含)和to (独占)之间的范围表示包含新元素的列表的子列表。 请注意,这是一个半开的间隔,因此如果没有添加元素,则getFrom()等于getTo() 。

可以通过调用getAddedSubList()获取添加元素的列表。

请注意,为了保持单独添加/删除更改的正确索引,这些更改必须按照其from索引进行排序。

更新更改 : wasUpdated()在更新更改时返回true。 from (含)和to (独家)之间的所有元素已更新。

重要提示:这是需要调用next()调用其他任何方法之前方法Change 。

唯一可以随时使用的方法是getList() 。

典型的用法是观察ObservableList上的变化,以便挂钩或取消挂起(或添加或删除侦听器)或为了在该ObservableList中的每个元素上维护一些不变量。 这样做的常见代码模式如下所示:

ObservableList theList = ...;

theList.addListener(new ListChangeListener() {

public void onChanged(Change c) {

while (c.next()) {

if (c.wasPermutated()) {

for (int i = c.getFrom(); i < c.getTo(); ++i) {

//permutate

}

} else if (c.wasUpdated()) {

//update item

} else {

for (Item remitem : c.getRemoved()) {

remitem.remove(Outer.this);

}

for (Item additem : c.getAddedSubList()) {

additem.add(Outer.this);

}

}

}

}

});

}

警告:此类直接访问源列表以获取有关更改的信息。

当列表中发生另一个更改时,这会使“更改”对象无效。

因此, 在不同的线程上使用这个类是不安全的 。

这也意味着不能在监听器内修改源列表,因为这将使所有后续监听器的此Change对象无效。

注意:如果更改包含不同类型的多个更改,则这些更改必须按照以下顺序排列 : 排列更改,添加或删除更改,更新更改这是因为在添加/删除更改后排除更改不会如下改变添加元素的位置。 另一方面,更新更改必须在添加/删除更改后执行,因为它们将其索引引用到列表的当前状态,这意味着应用所有添加/删除更改。

java changelistener_ListChangeListener.Change相关推荐

  1. Java动态加载一个类的几种方法以及invoke

    一.加载一个类的几种方法 接口 IUser package org.me.javaapp;/**** @author Administrator*/ public interface IUser {} ...

  2. 《图书管理系统——java》

    /* (盯着先拔头筹程序) * 该计划的版权声明和版本号 * Copyright (c) 2011, 烟台大学计算机学院学生的学校 * All rights reserved. * 文件名:    & ...

  3. java nio.2群发_JAVA NIO TCP SOCKET 聊天群发

    以前都是用一般的socket编程,用线程来控制.最近突然用nio来做些东西. nio的好处我来说一下:第一,读写都是基于块的,效率高.第二,通过引入selector,简化了网络编程模型,异步非阻塞. ...

  4. Java描述设计模式(11):观察者模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.观察者模式 1.概念描述 观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式.观察者模式定义了一种一对多 ...

  5. 利用JAVA计算TFIDF和Cosine相似度-学习版本

    写在前面的话,既然是学习版本,那么就不是一个好用的工程实现版本,整套代码全部使用List进行匹配效率可想而知. [原文转自]:http://computergodzilla.blogspot.com/ ...

  6. inferred type_您最终可以使用var在Java中声明Inferred Type局部变量-这就是为什么它很棒...

    inferred type by javinpaul 由javinpaul 您最终可以使用var在Java中声明Inferred Type局部变量-这就是为什么它很棒 (You can finally ...

  7. 《Java程序设计与数据结构教程(第二版)》学习指导

    <Java程序设计与数据结构教程(第二版)>学习指导 目录 图书简况 学习指导 第一章 绪论 第二章 数据和表达式 第三章 使用类和对象 第四章 条件和循环 第五章 编写类 第六章 图形用 ...

  8. java中GUI中显示当前时间_【java编程】返回当地时间Clock到GUI面板Panel上

    用java编程:返回当地时间到GUI面板上. ClockPanel.java /* * To change this template, choose Tools | Templates * and ...

  9. 人人农场 renren 外挂 Java 实现

    看过<被偷无奈写个收菜外挂> http://www.iteye.com/topic/692028 建议大家不要偷菜,因为偷菜如果遇到有狗的.有蜜蜂的将会失掉非常多的金币,本人以前的程序就有 ...

最新文章

  1. cookie共享子域名
  2. mybatis-plus 会自动增加 order by_python自动撸支付宝基金答题红包
  3. Java 从入门到高级学习路线
  4. linux -- read(), write()
  5. JAVA构架之并发编程的一些总结
  6. 代码生成(Code Generation) 表达式编译
  7. [使用心得]maven2之m2eclipse使用手册之二m2eclipse功能介绍
  8. HDU 6166 2017 多校训练:Senior Pan(最短路)
  9. 深度学习自学(二十八):Altas人脸SDK实现之-回调函数
  10. 原生js实现吸顶导航和回到顶部特效
  11. 树莓派安装DLNA实现流媒体服务器
  12. Web漏洞扫描工具AWVS12使用详解
  13. git通过http的方式下载和提交代码
  14. 解决旅游行业营销人员痛点的作品策划
  15. 郑州市暂住证办理过程
  16. 电脑突然连不上WiFi?按步骤检查
  17. 小项目----音乐在线播放器
  18. 在你的应用里使用Jetty嵌入式
  19. 元柚话TK:海外抖音TikTok+独立站如何搭建?
  20. Precision,Recall,F1score,Accuracy的理解

热门文章

  1. 在Ubuntu 14.04 64bit上查看硬件配置信息
  2. Blender三维建筑场景动画制作学习教程
  3. 面试前赶紧看了5道Python Web面试题,Python面试题No17
  4. 学术-数学:哥德巴赫猜想
  5. 词法作用域和动态作用域
  6. 几个不错的开源的.net界面控件
  7. 有关C/C++中,表达式计算顺序的问题,以及表达式内部变量“副作用”问题(转)...
  8. 如何设置网页自动刷新(JSP,JS,HTML)
  9. 从Qcheck 1.3 不能在不同操作系统上运行问题(chro124、chro342)说开来------
  10. linux下安装hadoop