在JScrollPane上停用ScrollOnExpand

时间:2011-09-12 14:12:12

标签: java swing scroll jtextcomponent

我想阻止滚动窗格在其视图中的内容展开时滚动。有什么指针吗?我已经在标题上尝试了谷歌搜索变体,以及阅读JScrollPane的所有文档,我仍然有点困惑。

编辑: 在滚动窗格中,我有一个文本窗格,旁边有一个文本窗格,显示旁边窗格的行号。每次添加新行时,我都会填写此数字窗格,这可能是导致视图前进的原因。

2 个答案:

答案 0 :(得分:2)

可以在DefaultCaret

上配置

滚动或不滚动

    DefaultCaret caret = (DefaultCaret) textPane.getCaret();
    caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE);

另请参阅Rob的精彩博客文章about text scrolling

答案 1 :(得分:0)

通常JScrollPane不这样做,当您使用像

这样的代码放大视口时,getViewport().getViewPosition()仍然是固定的
JScrollPane scrollPane = ...;
scrollPane.getViewport().getView().setPreferredSize(...);
scrollPane.getViewport().revalidate();

也许你的组件会以这样的方式发生变化,使你将其视为“滚动”。在这种情况下,您必须在放大视图后使用scrollPane.getViewport().setViewPosition(...)调整视图位置。