向下滚动并双击最后一个展开/折叠箭头时,TreeTableView 项目消失

2023-12-29

在与一个TreeTableView我意识到,当您向下滚动表格并双击最后一个展开/折叠箭头时,所有项目都会消失。但是,当您再次滚动时,所有项目都会重新出现。当然,当你有足够的物品时就会发生这种情况,因此垂直ScrollBar活跃。

以前有人遇到过这个问题吗?这是一个已知的问题?

简单的例子:

import java.util.Arrays;
import java.util.List;

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeTableColumn;
import javafx.scene.control.TreeTableView;
import javafx.scene.layout.StackPane;
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;

public class App extends Application {

    @Override
    public void start(Stage stage) {

        TreeTableView<List<String>> table = new TreeTableView<>();
        table.setMaxHeight(250);

        TreeTableColumn<List<String>, String> colCity = new TreeTableColumn<>("City");
        TreeTableColumn<List<String>, String> colCountry = new TreeTableColumn<>("Country");

        colCity.setCellValueFactory(c -> new SimpleStringProperty(c.getValue().getValue().get(0)));
        colCountry.setCellValueFactory(c -> new SimpleStringProperty(c.getValue().getValue().get(1)));

        table.getColumns().setAll(colCity, colCountry);

        TreeItem<List<String>> root = new TreeItem<>(Arrays.asList("Root", ""));
        root.setExpanded(true);

        for (int i = 0; i < 10; i++) {
            TreeItem<List<String>> item = new TreeItem<>(List.of("London", "UK"));
            item.getChildren().add(new TreeItem<>(List.of("New York", "US")));
            item.setExpanded(true);
            root.getChildren().add(item);
        }

        table.setRoot(root);

        Scene scene = new Scene(new StackPane(table));

        stage.setScene(scene);

        stage.show();
    }

    public static void main(String[] args) {
        launch();
    }

}

我已经测试过这段代码:

  • 硬件/操作系统:MacBookPro16,1/macOS Catalina 10.15.6
  • 爪哇:11.0.2、14.0.1
  • JavaFX:11.0.2、12.0.2、13.0.2、14.0.2.1、15

从 JavaFX 16 开始,这个问题已得到解决。然而,这里有一个hacky针对较旧 JavaFX 版本的解决方案。

它的工作原理是添加一个监听器expandedItemCountProperty()来强制TreeTableView需要时刷新:

table.expandedItemCountProperty().addListener(e -> {

    VirtualFlow<?> virtualFlow = (VirtualFlow<?>) table.lookup(".virtual-flow");

    if (virtualFlow != null && virtualFlow.getFirstVisibleCell() != null) {

        int firstVisibleIndex = virtualFlow.getFirstVisibleCell().getIndex();
        int visibleCells = virtualFlow.getLastVisibleCell().getIndex() - firstVisibleIndex;

            if (firstVisibleIndex > visibleCells) {
                table.refresh();
            }
    }
});

注意:使用问题中的示例进行测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向下滚动并双击最后一个展开/折叠箭头时,TreeTableView 项目消失 的相关文章

  • 如何在Java 8中实现Elvis运算符?

    我有一个经典的 Elvis 运算符 案例 其中我调用每个可能返回 null 的方法并将它们链接在一起 thing nullableMethod1 a nullableMethod2 b nullableMethod3 在 Java 8 中
  • 设置 SWT Shell 的默认字体

    有没有办法为整个 Shell 设置默认字体 以便任何新控件都将使用相同的字体 看来现在我必须为我创建的每个控件设置字体 这导致了太多的冗余 默认使用的字体由平台选择 请参阅中的其他信息 类字体 SWT 标准小部件工具包 http book
  • 使用 AbstractTableModel 获取 JTable 中选定的行

    我有一个JTable using AbstractTableModel我在哪里有一个JCheckBox在第一列中用于选择行 现在 我需要从已检查的表中获取选定的行 现在 我按顺序从第一行遍历到最后一行并获取所有选择的行 如下所示 List
  • Java:高性能消息传递(单生产者/单消费者)

    我最初问这个问题here https stackoverflow com questions 3367192 java is while true loop in a thread bad whats the alternative 但我意
  • 在Java中清空数组/处理

    除了循环遍历数组中的每个元素并将每个元素设置为 null 之外 Java 处理中是否有一个本机函数可以简单地清空数组 或销毁它 以便能够将其重新声明为新数组 There s Arrays fill myArray null 并不是说它执行的
  • Javadoc 1.5 和 1.6 中缺少 enum.valueOf(String name)

    这可能是一个愚蠢的问题 但我正在使用该方法enum valueOf String name 那里没问题 只是当我检查 javadoc 以了解有关此方法的更多信息时 我找不到它 有javadoc用于valueOf Class
  • 使用 Spring Data REST 处理自定义异常 (i18n)

    我正在使用 Spring Boot 1 5 4 和 Spring JPA Spring Data REST HATEOAS 我正在寻找一种最佳实践 Spring 方式 来自定义异常 Spring Data REST 正在管理添加 i18n
  • 无法实例化接收器 com.parse.GcmBroadcastReceiver

    我正在编写一个使用 GCM 通知和解析推送的离子应用程序 这个应用程序正在使用这些插件 com ionic keyboard 1 0 3 Keyboard com phonegap plugins PushPlugin 2 4 0 Push
  • 如果基于 Spring 注解的控制器位于 jar 文件内,则该控制器无法工作

    我的子模块中有一些基于注释的控制器 这些模块作为 jar 文件部署 jar 文件中基于注释的控制器未加载到 spring 配置中 我使用 Eclipse 中的导出实用程序手动导出 jar 文件 有人遇到过这个问题吗 当您使用 Eclipse
  • 是否可以从另一个方法传递 args[] 来调用 main 方法?

    我试图从另一个传递参数的方法调用类的主要方法 就像从命令行运行该类时一样 有没有办法做到这一点 您可以致电main方法就像您调用任何其他 静态 方法一样 MyClass main new String arg1 arg2 arg3 Exam
  • 以编程方式设置 Logback Appender 路径

    我正在尝试以编程方式设置 Logback 附加程序路径 滚动文件附加器 http logback qos ch apidocs ch qos logback core rolling RollingFileAppender html准确地说
  • 不要模拟值对象:过于通用的规则,没有解释

    以下是 Mockito 单元测试框架的引用 不要模拟值对象 为什么有人会想要这样做呢 因为实例化对象太痛苦了 gt 无效 原因 如果创造新的装置太困难 那就是一个迹象 代码可能需要一些认真的重构 另一种方法是创建 价值对象的构建者 有一些工
  • Java ConcurrentModificationException [重复]

    这个问题在这里已经有答案了 当删除倒数第二个元素时 没有 ConcurrentModificationException List
  • 在Java中多次读取System.in会导致IOException?

    我正在尝试创建一个小命令行游戏来强化我在过去几个月中在 Java 中学到的一些东西 我正在尝试创建一个名为 readInput 的方法 它返回一个我可以一次又一次调用的字符串 第一次它工作正常 但第二次它会导致 IO Exception 如
  • Selenium - 等待网络流量

    我们将 Selenium 与 Java API 和一些 Javascript 用户扩展一起使用 我们在应用程序中使用了大量 AJAX 调用 我们的许多测试随机失败 因为有时 AJAX 调用完成得比其他时候慢 因此页面未完全加载 我们通过等待
  • 方法签名中带或不带synchronized关键字的方法具有相同的字节码

    对于以下 2 个类 获得相同的 Java 字节码 java版本 java 版本 1 8 0 181 Java TM SE 运行时环境 构建 1 8 0 181 b13 Java HotSpot TM 64 位服务器 VM 内部版本 25 1
  • JMockit - 初始化问题

    当我使用以下测试时 我收到警告 警告 JMockit 是按需初始化的 这可能会导致某些测试失败 请检查文档以获取更好的初始化方法 这是我的测试实现 package test import static mockit Mockit impor
  • java.io.EOFException:没有更多可用数据 - 预期结束标记 关闭开始标记

    我正在使用 xmpp 开发一个聊天应用程序 根据我们的要求 我们有三台服务器 Apache Tomcat 7 ejabbered 2 1 11 和 mysql 5 5 to run xmppbot on tomcat used below
  • 如何使用剪辑来减少绘画时间?

    我正在尝试使用 Clip 来减少 CPU 负载 但剪辑在屏幕上留下了一些我似乎无法摆脱的垃圾 另外 打开和关闭剪辑似乎对 CPU 负载没有影响 在任一情况下 大部分时间似乎都花在重绘管理器和绘制缓冲图像上 import static jav
  • Libgdx 和 Google 应用内购买结果

    我遵循了这些指示 https github com libgdx libgdx wiki Interfacing with platform specific code使用 ActionResolver 接口集成 Libgdx 和原生 An

随机推荐

  • 如何将 bcp 实用程序与 oracle dB 或任何其他更好的选项一起使用

    我有一个 csv 文件 必须批量导入到 oracle dB 我之前正在研究其他 sybase dB 引擎 因此我有一个示例脚本 其中包含它的环境设置 现在我必须在 oracle dB 中执行该过程 所以第一行应该是什么我知道其余的其他参数
  • 使用 colspan 将粘性位置固定在 上?

    这好像是sticky不起作用 td with colspan 有办法解决吗 body font family Lucida Grande div width 500px height 200px overflow scroll td th
  • 是否有编译器开关可以关闭 C# 中对泛型的支持?

    我正在与一位合作伙伴合作 尝试将复杂的驱动程序从 NET 平台迁移到 NET MicroFramework 问题是 NET MF 不支持泛型 当我们尝试构建应用程序时 最后一个 链接 操作会退出并显示错误代码 CLR E PARSER UN
  • Eclipse:哪些 HTML 和 Javascript 插件?

    您使用哪些插件在 Eclipse 3 5 中编辑 带语法突出显示 HTML 和 Javascript Spket http spket com 是一个很棒的 JavaScript 插件 对于 HTML 我通常只使用附带的默认 XML HTM
  • jQuery 同位素插件水平滚动

    fiddle http jsfiddle net xKjUv 19 只是想让它水平滚动文档示例 http isotope metafizzy co docs layout modes html 我不知道为什么它不起作用 container
  • Apache Spark SQL 需要很长时间才能计算 Cassandra 中的十亿行吗?

    我有以下代码 我按如下方式调用 Spark Shell spark shell conf spark cassandra connection host 170 99 99 134 executor memory 15G executor
  • 无法使用 SSMS 通过 Windows 身份验证连接到本地 SQL Server

    我正在尝试使用 SSMS 使用 Windows 身份验证登录到安装在 Windows 7 上的本地 SQL Server 2005 我尝试使用各种服务器名称 例如 localhost SQL ANANTH PC etc 当我尝试时出现此错误
  • Wordpress ACF - 日期格式

    我使用日期字段将日期呈现为 11 15 2014 但我还想在页面的其他位置显示日期 例如 2014 年 11 月 15 日 是否可以以两种不同的格式呈现日期 您可以使用get field然后您可以将日期格式更改为您想要的任何格式 date
  • ES6 Promise 中的数据只有在我点击它之后才会呈现在页面上?

    我在我的应用程序中使用 Ionic 并连接到 Firebase 来提取数据 我在工厂中创建了一个承诺 将数据拉下来 并认为一旦完成 它应该在屏幕上呈现数据 但在触摸屏幕之前我什么也得不到 我没有收到任何错误 数据确实出现了 Factory
  • jpa 实体 bean 的默认范围是什么?它有什么帮助?

    我的项目中的所有实体 bean 看起来都是这样的 我想知道对实体使用 scope prototype 的意义是什么 Component Scope prototype Entity Table name SOME BEAN SOME CON
  • 如何在iPhone锁屏状态下开始播放音乐

    我在用UILocalNotification如果应用程序未运行 则提醒用户MPMusicPlayerController播放 iPod 音乐和MPMoviePlayerController播放广播流 url 根据苹果文档 如果 iPhone
  • 以编程方式使用尺寸类别

    我 希望 观看了所有相关的 WWDC2014 会议视频并阅读了文档 所以这个问题主要是为了证实我的怀疑 但请赐教 我想做的是使用自动布局为视图添加动画效果 这本身并不是问题 但这些动画的端点随着不同的方向而变化 我想我也许可以使用尺寸类来自
  • 无法配置 Firebase InstanceID

    您好 我正在尝试在我的应用程序中包含 firebase 并遵循文档 当我尝试进行 google 登录时 出现无法配置 Firebase InstanceID 错误 请建议如何克服此错误 有两件事需要检查 希望其中一项能为您解决 确保您的捆绑
  • 无法从 Xcode 运行 Instruments

    我最近升级到 Snow Leopard 从那以后我很难运行 Instrument 来从 Xcode 检测我的应用程序 录制 按钮将变灰 并且什么也不会发生 Xcode 的控制台中也没有消息告诉我出了什么问题 我曾经能够将其附加到进程或从仪器
  • 如何使用 jQuery 在 IE 中附加样式表?

    大家好 我只是想创建一个插件 我需要它对用户友好 所以我想append the 标签上的head加载我的插件时用户页面的一部分 它适用于所有其他浏览器 不确定 IE9 IE7 和 IE6 但不适用于 IE8 我不知道我的插件出了什么问题 所
  • 在 CakePHP 中重写 php 应用程序

    因此 我很想使用 php 框架重写我的应用程序 因为我认为这会让人们更容易参与 并改进应用程序的设计 CakePHP 看起来是最好的 PHP Web 框架 有人有这方面的经验吗 从手动编写 PHP 到使用框架 我应该考虑哪些注意事项 不取决
  • 写入 Mac OS X 10.7 中的“~/Library/Application Support”文件夹

    我可以使用 NSFileManager 在 Mac OS X 10 5 和 10 6 中的 Library Application Support 中创建 XYZ 文件夹 然而 在 10 7 中 它显示 您无权将 XYZ 保存在文件夹 应用
  • Enterprise Library 5.0 - 将自定义标记添加到 TextFormatter

    我创建了一个自定义异常 其中包含与我们的应用程序相关的数据 我想确保在引发异常时记录这些数据并将其记录到事件日志中 我尝试创建一个正在调用的自定义 TextFormatter 但不确定如何访问当前异常 以便我可以将自定义信息添加到日志条目中
  • Google Vision ocr:垂直和水平线文本识别

    我们正在使用 google Vision ocr 来收集收据中的文本 在某些情况下 收据上有一些垂直书写的文本 例如增值税信息等 问题是 谷歌视觉仅有效地读取主方向 例如水平方向 的文本 并丢弃在同一收据中以垂直方向而不是水平方向写入的所有
  • 向下滚动并双击最后一个展开/折叠箭头时,TreeTableView 项目消失

    在与一个TreeTableView我意识到 当您向下滚动表格并双击最后一个展开 折叠箭头时 所有项目都会消失 但是 当您再次滚动时 所有项目都会重新出现 当然 当你有足够的物品时就会发生这种情况 因此垂直ScrollBar活跃 以前有人遇到