我有一个绘制形状的JPanel。此面板将添加到scrollPane。但是当形状不在场景中时滚动不起作用。是否有一种简单的自动滚动方式,或者我必须以编程方式进行。
谢谢
答案 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的布局/大小。