Как сохранить позицию JScrollPane после выполнения JFrame.pack ()? - PullRequest
3 голосов
/ 14 июня 2011

У меня есть следующий код:

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

Итак, пользователь немного прокручивает, затем щелкает ссылку на моей панели, а затем я делаю пакет (), поэтому я пробую следующий код:

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

Но этот код по-прежнему возвращает мой scrollBar обратно в начало, а не сохраняет позицию, в которой он был до упаковки. Любые идеи будут оценены, спасибо!

1 Ответ

3 голосов
/ 14 июня 2011

Попробуйте обернуть метод setValue () в SwingUtilities.invokeLater ().

...