在我执行JFrame.pack()之后如何保存我的JScrollPane位置?

时间:2011-06-13 20:01:40

标签: java swing jframe jscrollpane

我有以下代码:

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);

但是这段代码仍然会将我的scrollBar返回到开头,而不是保持它最初位于包之前的位置。任何想法将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:3)

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