Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to auto scroll to bottom in Java Swing

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

like image 472
pathikrit Avatar asked Jun 16 '11 21:06

pathikrit


People also ask

What is the difference between scrollbar and ScrollPane in Java?

A Scrollbar is a Component, but not a Container. A ScrollPane is a Container. A ScrollPane handles its own events and performs its own scrolling.

What is Java ScrollPane?

A JScrollPane provides a scrollable view of a component. When screen real estate is limited, use a scroll pane to display a component that is large or one whose size can change dynamically. Other containers used to save screen space include split panes and tabbed panes. The code to create a scroll pane can be minimal.


2 Answers

scrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {  
        public void adjustmentValueChanged(AdjustmentEvent e) {  
            e.getAdjustable().setValue(e.getAdjustable().getMaximum());  
        }
    });

This would be the best. Found from JScrollPane and JList auto scroll

like image 200
zerodefect Avatar answered Sep 23 '22 14:09

zerodefect


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() );
like image 32
camickr Avatar answered Sep 23 '22 14:09

camickr