gpt4 book ai didi

java - JScrollPane 设置滚动位置

转载 作者:行者123 更新时间:2023-11-30 06:27:40 25 4
gpt4 key购买 nike

我有以下代码片段

query_area = new JTextArea("");
query_scroll_pane = new JScrollPane(query_area);
query_scroll_pane.setSize(1000,80);
query_scroll_pane.setLocation(10,10);
query_panel.add(query_scroll_pane);

将我的文本区域添加到滚动 Pane 。现在在一种方法中,我将文本区域的文本动态设置为

sf.query_area.setText("Query "+(sf.query_counter)+sf.query_store[sf.query_counter]);
System.out.println("Position: "+sf.query_scroll_pane.getHorizontalScrollBar().getValue());

现在我的查询是,当显示较长的文本时,会出现滚动条,但 system.out.println 将滚动条的位置打印为 0 而不是一些增加的值。

为什么会这样??

最佳答案

我能想到的唯一原因是视口(viewport)位置没有改变。

首先想到的是,视口(viewport)可能尚未对文本开始位置的变化使用react,因此在设置文本后立即转储结果反射(reflect)了当前状态滚动条(尚未开始更新)

你可以试试

SwingUtilities.invokeLater(new Runnable() {
public void run() {
System.out.println("Position: "+sf.query_scroll_pane.getHorizontalScrollBar().getValue());
}
});

相反,看看是否打印出更新的值

或者,您可以向滚动条添加一个AdjustmentListener,它会在发生更改时发出通知JScrollBar#addAdjustmentListener

关于java - JScrollPane 设置滚动位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13213030/

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