gpt4 book ai didi

java - JScrollPane 自动向下滚动到 JPanel 中的最低组件

转载 作者:行者123 更新时间:2023-12-02 03:40:10 25 4
gpt4 key购买 nike

在我的 JPanel(位于 JScrollPane 中)中,我有几个 JTextArea。启动程序时,这些区域由 JTextArea.setText("text");

填充

问题是 JScrollPane 向下滚动到具有最低 Y 位置的 JTextArea,就好像用户将焦点放在 JTextArea 上一样,无论何时填充文本。我认为如果 JScrollPane 可能想滚动到正在使用的“当前”JTextArea,我可以通过首先填充底部的 JTextArea 来解决该问题。它不起作用,所以我假设它只是记住了它所处的最低点,然后出于某种原因停留在那里。

像这样设置 View 没有任何区别。

JScrollPane.getViewPort().scrollRectToVisible(new Rectangle(0,0,1,1));

我通过忽略填充最后一个 JTextAreas 进行了测试,然后 JScrollPane 按照我的意愿查看 JPanel 的顶部。发生了什么事,为什么它忽略我的代码?

更新,已选择答案当 GUI 准备好后,您必须稍后设置视口(viewport)

SwingUtilities.invokeLater(new Runnable() 
{
public void run()
{
scrollPane.getViewport().setViewPosition(new Point(0, 0));
}
});

最佳答案

JScrollPane.getViewPort().scrollRectToVisible(new Rectangle(0,0,1,1));

scrollRectToVisible() 方法适用于添加到视口(viewport)的组件(包含文本区域的面板),而不是视口(viewport)本身。不确定当您直接在视口(viewport)上调用它时会发生什么。

相反,我会执行以下操作:

scrollPane.getViewPort().setViewPosition( new Point(0, 0) );

请注意,您可能需要将该语句包装在 SwingUtilities.invokeLater() 中,以确保在布局管理器将所有组件放置在面板上之后在 EDT 上执行代码。

关于java - JScrollPane 自动向下滚动到 JPanel 中的最低组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36916383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com