JScrollPane中JPanel的大小调整不正确在Java 1.5中

时间:2010-04-30 12:13:39

标签: java user-interface jpanel jscrollpane

我正在创建一个图像加载组件,它由一个包含JScrollPane的JPanel组成,后者又包含另一个JPanel。该组件所做的是允许将图像放在其上,之后加载图像并将最内部的JPanel设置为丢弃的图像的大小。这反过来导致滚动条显示,用户可以滚动图像。一切正常。当我尝试将图像自动缩小到外部JPanel中的最大可见区域时,会出现问题。在这种情况下,我将图像的均匀比例小于或等于外部JPanel的宽度和高度。现在发生的是水平和垂直滚动条都显示出内部JPanel大于可见区域(不应该是这种情况)。我确认图像缩放到适当的尺寸(即,最大宽度和高度得到尊重)。我还验证了如果我将最大高度减少3个像素,则不会出现滚动条。

我认为问题在于,panel.getWidth()和panel.getHeight()实际上并不返回子组件可以占用的可见区域(最大区域)。 IE浏览器。 JPanel周围的边界可能会有更多的宽度和高度。或者类似的东西。

我的问题是,我该如何解决这个问题。功能上我想要的是确定JPanel在JScrollPane中的最大大小,然后将面板设置为该大小并在其上方绘制图像,并确保滚动窗格的滚动条不会显示。现在滚动条设置为AS_NEEDED。

以下是代码的一部分:

JPanel. Insets insets = getInsets();
int width = getWidth() - insets.left - insets.right;
int height = getHeight() - insets.top - insets.bottom;
imageScaled = ImageUtils.uniformScaleImage(imageOriginal, width, height);

谢谢!

1 个答案:

答案 0 :(得分:1)

  

功能上我想要的只是   确定JPanel的最大大小   可以在JScrollPane

scrollPane.getViewport().getViewSize();