当前位置: 首页 > 面试题库 >

JavaFX TextArea和自动滚动

暴博远
2023-03-14
问题内容

我正在尝试使TextArea自动滚动到底部,并通过事件处理程序将其添加到新文本中。每个新条目只是一个长字符串,每个条目之间用换行符分隔。我尝试了将setscrolltop设置为Double.MIN_VALUE但无济于事的更改处理程序。关于如何做到这一点的任何想法?


问题答案:

我没有足够的声誉来发表评论,但想为以后的读者提供一些见解,以了解为何setText似乎不会触发侦听器,而appendText却会触发,就像Math的回答一样。

我自己遇到类似问题时就找到了这个答案,并调查了代码。目前,这是Google搜索中“ javafx textarea settext
scroll”的最高搜索结果。

setText确实会触发侦听器。根据TextInputControl(TextArea的超类)的doSet方法的javadoc:

     * doSet is called whenever the setText() method was called directly
     * on the TextInputControl, or when the text property was bound,
     * unbound, or reacted to a binding invalidation. It is *not* called
     * when modifications to the content happened indirectly, such as
     * through the replaceText / replaceSelection methods.

在doSet方法内部,对updateText()进行了调用,TextArea覆盖了该方法:

  @Override final void textUpdated() {
        setScrollTop(0);
        setScrollLeft(0);
    }

因此,当您像Math的答案一样在侦听器中设置滚动量时,会发生以下情况:

  1. TextProperty已更新
  2. 将调用您的听众,并设置了滚动条
  3. doSet被称为
  4. textUpdated被称为
  5. 滚动设置回到左上方

当您附加“”时,

  1. TextProperty已更新
  2. 将调用您的听众,并设置了滚动条

上面的javadoc很清楚为什么是这种情况-
仅在使用setText时才调用doSet。实际上,appendText调用insertText,后者调用replaceText-
并且javadoc进一步声明replaceText不会触发对doSet的调用。

这种行为非常令人讨厌,特别是因为这些都是最终方法,乍一看并不明显-但这不是错误。



 类似资料:
  • 问题内容: 我有下一个代码: 自动向下滚动。但是,如果我尝试向上滚动以重新阅读消息,则会强制向下滚动。我怎样才能解决这个问题? 问题答案: 添加新邮件时,使用尺寸与邮件窗格的首选大小相同的进行调用。给定垂直取向,它可方便地使的优选尺寸的邮件面板的高度的整数倍。另请参阅: 如何使用滚动窗格 。 附录:有关 文本区域滚动的 引人入胜的讨论也可能会有所帮助。

  • 我正在处理一个分支,例如需要删除表X中的一列,我添加了一个更改,它对该特定分支有好处,然后我切换到另一个分支,该分支仍然需要该列,并且该更改需要回滚。db在不同的分支之间有很多变化,比如这样的变化。 我为每个分支添加一个新的changelog xml,并将其包含在主changelog xml中。显然,当我切换到另一个分支时,前一个分支的changlog xml不再在工作区中,并且liquibase

  • 问题内容: 我已经阅读了很多不同的问题,给出的解决方案似乎都不适合我的用例。我首先简单地将target =“ _ top”放在所有链接上,但这实际上迫使我的应用重新加载,将无法正常工作。我也看到人们说他们使用 autoscroll =“ true”, 但这似乎只有在我的 ui-view中有效 。 问题在于,在我的index.html文件中,我已修复了导航和其他静态元素,这些元素位于我的第一个ui视

  • 问题内容: 我在ScrollPane中有一个Label。我正在循环中更新标签(在另一个线程中)。如果用户未将ScrollPane保持在某个位置,如何更新ScrollPane使其向下滚动(而不是横向滚动,这将手动完成)?是否有二传手? 问题答案: @数学谢谢,这工作! 我用这部分代码解决了“必须看标签”的问题

  • 我遇到了自动布局的问题,似乎无法找到应该很容易实现的答案。 我有以下视图层次结构: 标签上的前导/尾随限制使它们在更薄的设备上更高(iPhone 4s vs iPhone 6)。 为了让UIScrollview正常工作,我需要在UIScrollView内部设置UIView的高度约束,以避免出现“不明确的高度”警告。 但在iPhone 4s上运行时,UIView不够高,无法容纳它的子视图。 到目前为

  • 本文向大家介绍DevExpress GridView自动滚动效果,包括了DevExpress GridView自动滚动效果的使用技巧和注意事项,需要的朋友参考一下 引言 最新有一个winform项目使用的是DevExpress的控件,所以最近都在摸索使用这套控件,实在是佩服整套控件的强大,同时代码写起来也简洁。客户有一个需求,希望报表结果能在外接的大屏幕上定时滚动。这个报表我们使用的控件就是Gri