ScrollPane删除节点时跳转到顶部

2024-04-21

我有一个ScrollPane含有一个TilePane显示图像。每当我删除其中一张图像时ScrollPane跳回到顶部,这在尝试删除多个图像时非常烦人。有没有办法控制滚动行为?

我在 Windows 7 上运行此代码:

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ScrollPane;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.TilePane;
import javafx.stage.Stage;

public class ScrollbarProblem extends Application{
    private TilePane imagePane;
    private ScrollPane scroller;

    @Override
    public void start(Stage primaryStage) {
        imagePane = new TilePane();
        scroller = new ScrollPane();
        scroller.setContent(imagePane);
        BorderPane root = new BorderPane(scroller, null, null, null, null);
        Scene scene = new Scene(root, 800, 600);
        primaryStage.setScene(scene);
        primaryStage.show();

        for(int i = 0; i < 20; i++){
            Image img = new Image("https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/SIPI_Jelly_Beans_4.1.07.tiff/lossy-page1-220px-SIPI_Jelly_Beans_4.1.07.tiff.jpg");
            final ImageView imageView = new ImageView(img);

            final Button button = new Button("Delete");
            final StackPane stackPane = new StackPane();

            button.setOnAction(new EventHandler<ActionEvent>() {

                @Override
                public void handle(ActionEvent event) {
                    imagePane.getChildren().remove(stackPane);
                }
            });

            stackPane.getChildren().addAll(imageView, button);
            imagePane.getChildren().add(stackPane);
        }
    }

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

ScrollPane确保重点突出Node显示在视口内。 AButton单击的内容具有焦点。这意味着焦点节点被删除,并且 JavaFX 尝试将焦点移动到该节点中的另一个节点。ScrollPane内容,在本例中是第一个Button. ScrollPane将此节点滚动到视图中,这解释了观察到的行为。

一个解决方案是设置focusTraversable每个人的财产Button to false.

Another option which would still allow you to change the focus via Tab would be overriding the onTraverse method of the ScrollPaneSkin, since this is the method responsible for this behavior:

scroller.setSkin(new ScrollPaneSkin(scroller) {

    @Override
    public void onTraverse(Node n, Bounds b) {
    }

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

ScrollPane删除节点时跳转到顶部 的相关文章

  • 在 Java 中连接和使用 Cassandra

    我已经阅读了一些关于 Cassandra 是什么以及它可以做什么的教程 但我的问题是如何在 Java 中与 Cassandra 交互 教程会很好 如果可能的话 有人可以告诉我是否应该使用 Thrift 还是 Hector 哪一个更好以及为什
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • Java - 将节点添加到列表的末尾?

    这是我所拥有的 public class Node Object data Node next Node Object data Node next this data data this next next public Object g
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 从 127.0.0.1 到 2130706433,然后再返回

    使用标准 Java 库 从 IPV4 地址的点分字符串表示形式获取的最快方法是什么 127 0 0 1 到等效的整数表示 2130706433 相应地 反转所述操作的最快方法是什么 从整数开始2130706433到字符串表示形式 127 0
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • 如何将 pfx 文件转换为 jks,然后通过使用 wsdl 生成的类来使用它来签署传出的肥皂请求

    我正在寻找一个代码示例 该示例演示如何使用 PFX 证书通过 SSL 访问安全 Web 服务 我有证书及其密码 我首先使用下面提到的命令创建一个 KeyStore 实例 keytool importkeystore destkeystore
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • 加密 JBoss 配置中的敏感信息

    JBoss 中的标准数据源配置要求数据库用户的用户名和密码位于 xxx ds xml 文件中 如果我将数据源定义为 c3p0 mbean 我会遇到同样的问题 是否有标准方法来加密用户和密码 保存密钥的好地方是什么 这当然也与 tomcat
  • 如何在 javadoc 中使用“<”和“>”而不进行格式化?

    如果我写
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • 编译器抱怨“缺少返回语句”,即使不可能达到缺少返回语句的条件

    在下面的方法中 编译器抱怨缺少退货声明即使该方法只有一条路径 并且它包含一个return陈述 抑制错误需要另一个return陈述 public int foo if true return 5 鉴于Java编译器可以识别无限循环 https
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo

随机推荐

  • 如何强制增量 Foundry Transforms 作业以非增量方式构建而不影响语义版本?

    如何强制特定数据集以非增量方式构建而不更改转换存储库中的语义版本 有关我们具体用例的详细信息 我们有大约 50 个数据集 由单个增量 Python 通过手动注册和 for 循环定义 此转换的输入可以是 100 到 10000 个小 gzip
  • 在 PHP 中生成 wav 音调

    我想在 php 中生成正弦音 但是构建我的 wav 时我需要给出以字节为单位的值 我不知道该怎么做 这是我的代码 freqOfTone 440 sampleRate 44100 samplesCount 80000 amplitude 0
  • 如何启动已停止的线程

    我创建一个新线程并从主线程启动它 m MyThread new Thread HandleMyThread m MyThread IsBackground true m MyThread Start private void HandleM
  • 虾表设置标题行背景色

    pdf table header row1 row2 width 490 cell style size 7 align center do style row 0 padding 4 2 font Prawn BASEDIR data f
  • 在 Oracle 计算实例 (ubuntu-20.04) 上打开端口 19132

    我创建了一个运行 Ubuntu 20 04 的 Oracle 云基础设施计算实例 我正在尝试打开端口 19132 根据我发现的另一个问题在 Oracle Cloud Infrastructure 计算节点上打开端口 80 https sta
  • Mac 终端 - 打开终端时出现“释放的指针未分配”错误

    在 mac 上打开终端时收到以下消息 上次登录 3 月 11 日星期二 14 33 24 在控制台上 登录 291 0x7fff78af9310 malloc 对象 0x7f974be006f0 的错误 正在释放的指针未分配 在malloc
  • 映射服务使用的网络驱动器

    假设某些 Windows 服务使用需要映射网络驱动器且不需要 UNC 路径的代码 当服务启动时 如何使驱动器映射可供服务会话使用 以服务用户身份登录并创建持久映射不会在实际服务的上下文中建立映射 使用此功能需要您自担风险 我已经在XP和Se
  • Java - 堆与直接内存访问

    我最近遇到sun misc Unsafe类 允许用户以类似于 C 的方式分配 解除分配和一般访问内存 我读过一些解决这个问题的博客 例如 堆内存和直接内存哪个更快 http mentablog soliveirajr com 2012 11
  • 如何在功能测试中测试电子邮件(Symfony2)

    我正在尝试在功能测试中测试电子邮件 我的源代码是一样的食谱的例子 http symfony com doc current cookbook email testing html 控制器 public function sendEmailA
  • PySpark 中按降序排序

    我正在使用 PySpark Python 2 7 9 Spark 1 3 1 并有一个数据框 GroupObject 我需要按降序过滤和排序 试图通过这段代码来实现它 group by dataframe count filter coun
  • 使用 F# 的爱因斯坦之谜解决方案 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在找爱因斯坦之谜 http en
  • 将最后一个值替换为之前的值

    我有一组不完整的三元组 a np arange 10 3 1 print a 1 1 1 2 2 2 3 3 3 4 Or a1 np arange 11 3 1 print a1 1 1 1 2 2 2 3 3 3 4 4 最后的值为4
  • 是否可以让 valgrind 忽略某些库?

    或者最好是全部而不只是我的代码 我的程序使用 Gtk Loudmouth 和其他一些东西 而这两个 以及它们背后的一些 libgcrypto libssl 本身导致了如此多的错误 以至于我无法检测到我自己的错误 是否有可能让 valgrin
  • 适用于多个项目的多个 Rails 版本

    我想在一个项目中使用 Rails 2 2 2 在另一个项目中使用 Rails 2 3 2 两者均已安装 What is rails 2 2 2 version应该做的 我读到它使 2 2 2 成为工作版本 也就是说 从那时起将使用的版本 但
  • 当我使用 gridview:true 时, afterInsertRow : function(ids) 方法不执行

    当我设定gridview to true gridview true 在我们的jqGrid中增加jqGrid的性能 方法如下插入行后 或者其他类似的方法不被执行 以下是我的jgGrid的代码 jQuery displaylistGrid j
  • C#中的foreach是如何实现的? [复制]

    这个问题在这里已经有答案了 究竟是怎样的foreach在 C 中实现 我想象它的一部分看起来像 var enumerator TInput GetEnumerator while enumerator MoveNext do some st
  • VS 2015 命令提示符中不再找到 rc.exe

    我刚刚安装了 Windows 10 创意者更新 版本 10 0 15063 我安装了多个版本的 Visual Studio 2012 2013 2015 和 2017 我几周前才安装了 VS 2017 Problem CMake 版本 3
  • Flash 点击时不打开链接

    我用 Flash 创建了这个横幅 我需要单击它来打开一个网页 我使用了这个 Actionscript 3 0 代码 link btn addEventListener MouseEvent CLICK openurl function op
  • 为什么无法使用 CentOS、plesk 9.2.1 和 tomcat 5.5 安装 solr 1.3.0?

    好吧 我只是通过他的托管提供商为我的客户设置了一个专用服务器 他们在那里安装了 plesk 版本 9 2 1 并且该专用服务器的一个警告是 如果我在控制面板之外 即使用 SSH 执行任何任务 他们不保证支持该软件组件 这很好 因为我宁愿使用
  • ScrollPane删除节点时跳转到顶部

    我有一个ScrollPane含有一个TilePane显示图像 每当我删除其中一张图像时ScrollPane跳回到顶部 这在尝试删除多个图像时非常烦人 有没有办法控制滚动行为 我在 Windows 7 上运行此代码 import javafx