当Shape在JPanel之外时自动滚动

时间:2011-03-07 15:58:18

标签: java swing scroll jscrollpane

我有一个绘制形状的JPanel。此面板将添加到scrollPane。但是当形状不在场景中时滚动不起作用。是否有一种简单的自动滚动方式,或者我必须以编程方式进行。

谢谢

1 个答案:

答案 0 :(得分:2)

我假设你使用JPanel作为自定义绘图的画布(即你没有添加任何JComponents)。如果是这种情况,JScrollPane无法知道JPanel的大小,只是将其大小完全填充scrollPane的视口(这意味着你永远不会真正得到滚动条)。

要解决此问题,您应该在JPanel上覆盖getPreferredSize。

@Override     
public Dimension getPreferredSize() {
    int height = calculateHeight(); 
    int width = calculateWidth(); 
    return new Dimension(width, height);
}

修改

此外,由于您正在进行自定义绘图,因此每当您要绘制的形状发生变化时,请务必调用revalidate。这告诉我们需要重新考虑JPanel的布局/大小。