我有一个带有JScrollPane的简单JPanel(根据需要有垂直滚动条)。
事情被添加到JPanel中(或从中移除)当它超出面板底部时,我希望JScrollPane根据需要自动向下滚动到底部,或者如果某些组件离开面板则向上滚动。
我该怎么做?我猜我需要某种监听器,只要JPanel高度发生变化就会调用它?或者有一些简单的事情JScrollPanel.setAutoScroll(true)
?
答案 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);