【问题标题】:How do I save my JScrollPane position after I do a JFrame.pack()?执行 JFrame.pack() 后如何保存 JScrollPane 位置?
【发布时间】:2011-09-14 04:57:08
【问题描述】:

我有以下代码:

JFrame frame = new JFrame();
JScrollPane scrollPane = new JScrollPane(new panel(with stuff in it));
frame.getContentPane().add(scrollPane);

所以用户滚动了一下,然后点击我面板上的一个链接,然后我做了一个 pack(),所以我尝试以下代码:

int val = scrollPane.getVerticalScrollBar().getValue();
frame.pack();
scrollPane.getVerticalScrollBar().setValue(val);

但是这段代码仍然将我的滚动条返回到开头,而不是保持它在打包之前的原始位置。任何想法将不胜感激,谢谢!

【问题讨论】:

  • 您的int val 持有什么?它是正确的值吗?不用包也能用吗?
  • @jzd :是的 val 拥有正确的值,并且它在没有包的情况下也可以工作。
  • 发布您的 SSCCE (sscce.org) 以展示问题。
  • 好奇:你为什么要做一个 pack()?
  • 只是问..会不会frame.pack()会忽略scrollBar的定位

标签: java swing jframe jscrollpane


【解决方案1】:

尝试将 setValue() 方法包装在 SwingUtilities.invokeLater() 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    相关资源
    最近更新 更多