gpt4 book ai didi

java - Java 1.5 中 JScrollPane 中 JPanel 的大小不正确

转载 作者:行者123 更新时间:2023-12-01 16:05:19 25 4
gpt4 key购买 nike

我正在制作一个图像加载组件,它由一个包含 JScrollPane 的 JPanel 组成,而 JScrollPane 又包含另一个 JPanel。该组件的作用是允许将图像放置在其顶部,然后加载图像并将最内部的 JPanel 设置为放置的图像的大小。这反过来会导致滚动条出现,用户可以滚动图像。这一切都很好。当我尝试将图像自动缩小到外部 JPanel 中的最大可见区域时,问题就出现了。在这种情况下,我对图像进行统一缩放,使其小于或等于外部 JPanel 的宽度和高度。现在发生的情况是,水平和垂直滚动条都显示,表明内部 JPanel 大于可见区域(不应该是这种情况)。我验证了图像是否缩放到正确的尺寸(即尊重最大宽度和高度)。我还验证了如果我将最大高度减少 3 个像素,则不会出现滚动条。

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

我的问题是,如何解决这个问题。从功能上讲,我想要的只是确定 JPanel 在 JScrollPane 中的最大大小,然后将面板设置为该大小并在其顶部绘制图像,并确保滚动 Pane 的滚动条不会显示。现在滚动条设置为 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);

谢谢!

最佳答案

Functionally all i want is to determine the maximum size a JPanel can be in a JScrollPane

scrollPane.getViewport().getViewSize();

关于java - Java 1.5 中 JScrollPane 中 JPanel 的大小不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2744384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com