I have a simple JPanel with a JScrollPane (with vertical scrollbar as needed) on it.
Things get added to (or removed from) the JPanel and when it goes beyond the bottom of the panel, I want the JScrollPane to scroll down to the bottom automatically as needed or scroll up if some components go away from the panel.
How shall I do this? I am guessing I need some kind of listener which gets called whenever the JPanel height changes? Or is there something as simple as JScrollPanel.setAutoScroll(true)?
解决方案
When you add/remove components for a panel you should invoke revalidate() on the panel to make sure the components are laid out properly.
Then, if you want to scroll to the bottom then you should be able to use:
JScrollBar sb = scrollPane.getVerticalScrollBar();
sb.setValue( sb.getMaximum() );