Java tutorial
import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.JViewport; public class Main extends JPanel { public Main() { super(); JTree tree = new JTree(); for (int i = 0; i < tree.getRowCount(); i++) { tree.expandRow(i); } final JScrollPane pane = new JScrollPane(tree) { Dimension prefSize = new Dimension(200, 150); public Dimension getPreferredSize() { return prefSize; } }; pane.getVerticalScrollBar().addAdjustmentListener(e -> { JViewport vp = pane.getViewport(); if (vp.getView().getHeight() <= vp.getHeight() + vp.getViewPosition().y) { System.out.println("End"); } }); add(pane); } public static void main(String[] args) { final JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new Main()); frame.pack(); frame.setVisible(true); } }