自定义TreeCell与单元格工厂和后台线程

时间:2016-02-15 19:44:24

标签: javafx

  1. 我如何做到这一点,TreeView填充了ProgressIndicator s,而事情正在发生,但没有阻止线程,使用单元工厂?
  2. TreeItem.setGraphic()TreeCell.setGraphic()的区别如何?
  3. 当我实例化TreeItem时,我需要将图片设置为ProgressIndicator,但我不确定在创建TreeItem时是否应该这样做TreeCell.updateItem被工厂抛弃。
  4. 我认为在使用单元工厂时,所有图形内容都需要在那里发生,因此TreeItem.setGraphic只是一种便利,我应该从updateItem内找出问题所在
  5. 我正在做文件资源管理器示例。 TreeView中的每个项目的值都设置为sun.nio.fs.WindowsPath,并通过继承TreeItem来实现。我重写了isLeaf()getChildren()。当我没有插入网络时,问题是isLeaf()在网络驱动器上需要很长时间。

    所以这就是我正在创建一个带路径值的新树项目(不使用单元工厂):

    1. 使用isRegularFile()启动新线程(使用Clojure期货)检查路径值是否为路径或文件。以后可以在取消引用未来时获得此结果。
    2. 实例化匿名TreeItem衍生物的实例(使用Clojure代理)。
    3. 使用setGraphic()在新的TreeItem个实例上致电ProgressIndicator()
    4. 启动另一个检查第一个线程结果的线程。当第一个线程完成时,然后根据叶子函数的值,第一个线程设置相应的文件或文件夹图标,并使用本地匿名函数调用addEventHandler(),这些函数根据展开或折叠更改图形。 / LI>
    5. 在任一新线程完成之前,返回TreeItem的新实例(从步骤2开始)。
    6. 这有效,并且在isLeaf运行时可以在每个网络驱动器上放置一个swirly图形。但是当TreeItem和TreeCell似乎都有setGraphic()函数时,我不确定如何做到这一切;我不确定谁拥有"什么。我认为TreeView拥有项目和单元格,并且在setGraphic()上调用TreeItem以某种方式引用默认单元格的图形,而不使用自定义单元格工厂。

      我需要弄清楚如何从单元格工厂updateItem()等访问isLeaf值。

0 个答案:

没有答案