添加新组件时如何在jpanel中设置滚动条

时间:2014-07-23 14:21:08

标签: java swing jpanel jscrollpane

我有一个JPanel(A)与BoxLayout,并且它嵌入了另一个JPanel(B)JScrollPane。 我想在将新组件添加到A时将滚动位置设置在底部。 我尝试下面的代码,但它阻止使用向上滚动来查看所有A上下文:(滚动固定在底部!)

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

有人有另一种解决方案吗?

1 个答案:

答案 0 :(得分:1)

您可以在添加新组件后调用此方法:

JScrollBar sb = scroll.getVerticalScrollBar();
sb.setValue( sb.getMaximum() );//not sb.getMaximumValue()

修改

您可以使用此代替上层代码。

panel.revalidate();
int height = (int)panel.getPreferredSize().getHeight();
Rectangle rect = new Rectangle(0,height,10,10);
panel.scrollRectToVisible(rect);