【问题标题】:Deactivate ScrollOnExpand on JScrollPane停用 JScrollPane 上的 ScrollOnExpand
【发布时间】:2011-09-12 14:12:11
【问题描述】:

我想阻止滚动窗格在其视图中的内容展开时滚动。任何指针?我试过谷歌搜索标题的变体,以及阅读 JScrollPane 的所有文档,但我仍然有点困惑。

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

【问题讨论】:

  • 你能举个例子吗?是它滚动并将您的内容保持在中间的问题吗?
  • 我将有一个很长的文档,它延伸到可见屏幕下方。当我在文档中间时,我插入一个换行符,视图滑到文档底部。
  • @Anyscope 你的意思是当它的JViewPort里面的内容???
  • 啊,是的。抱歉不清楚。
  • 你有两个 JTextPane 和一个单独的 JTextPane 用于对行编号,必须存在(两位作者的一些例子,在这里也很活跃)关于行号,我改变了你的标签

标签: java swing scroll jtextcomponent


【解决方案1】:

可在 DefaultCaret 上配置滚动或不滚动

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

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

【讨论】:

    【解决方案2】:

    通常 JScrollPane 不会这样做,当您使用类似代码放大视口时,getViewport().getViewPosition() 保持固定

    JScrollPane scrollPane = ...;
    scrollPane.getViewport().getView().setPreferredSize(...);
    scrollPane.getViewport().revalidate();
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多