如何在Java Swing中自动滚动到底部

时间:2011-06-16 21:50:32

标签: java swing scroll jpanel jscrollpane

我有一个带有JScrollPane的简单JPanel(根据需要有垂直滚动条)。

事情被添加到JPanel中(或从中移除)当它超出面板底部时,我希望JScrollPane根据需要自动向下滚动到底部,或者如果某些组件离开面板则向上滚动。

我该怎么做?我猜我需要某种监听器,只要JPanel高度发生变化就会调用它?或者有一些简单的事情JScrollPanel.setAutoScroll(true)

3 个答案:

答案 0 :(得分:12)

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

这将是最好的。来自JScrollPane and JList auto scroll

答案 1 :(得分:4)

为面板添加/删除组件时,应调用面板上的revalidate()以确保组件正确布局。

然后,如果你想滚动到底部,那么你应该可以使用:

JScrollBar sb = scrollPane.getVerticalScrollBar();
sb.setValue( sb.getMaximum() );

答案 2 :(得分:4)

这就是我自动向上或向下滚动的方式:

getLayoutInflater().inflate(R.layout.checklist, contentFrame);