gpt4 book ai didi

Java Swing : component that resizes itself but doesn't influence the layout

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:03:15 25 4
gpt4 key购买 nike

我会尽量简单地解释我的问题,但这是一个棘手的话题,没有遇到过这个问题的人可能不知道我在说什么。

我想使用 BorderLayout 使用西、东、北、南等组件,这些组件是我的“正常”组件(JLabel、JButtons 等),然后我希望中心组件是一个“图像”(即是:像素)。为此,我使用 BufferedImage 并在属于“中心”的面板内的 JLabel 上使用 setIcon。

但是我希望我的图像/像素是“流畅的”:每当用户调整应用程序大小时,我想计算 JLabel 的确切大小(图标/文本间隙设置为 0),然后创建一个新图像(我直接在 BufferedImage 中操作的像素,但无论如何)具有完全相同的大小。

现在它确实工作正常。但只有当我调整主窗口(“窗口”,如“操作系统窗口之一”)的大小时,才变大

当我缩小主窗口时它不起作用。

经过大量测试,原因显然是因为我的 JLabel 的大小(我在其中做了一个 setIcon( img ) 影响了布局管理器的计算。

因此,数十亿美元的问题来了:我应该如何使用 BorderLayout(或任何其他布局),以便我可以在我的应用程序的中心创建一个“流动的”像素矩形?

最佳答案

用一个我不会不会接受的答案来回答我自己的问题,即使它确实有效......

可以通过创建比中心区域的 getVisibleRect 小几个像素的图片来“解决”这个问题。

所以在我的例子中,我从 BufferedImage 创建了一个 ImageIcon,它比容纳它的区域小 20 个像素(宽度和高度)。

然后发生的事情是,因为图片较小,它不会“阻塞”/阻止布局管理器在缩小主窗口时将所有内容放在正确的位置。

因此,通过使用这样的 hack,我得到了我想要的“流畅”行为。

然而,这是一个 hackyness 水平不能被低估的 hack,我相信有一个非常干净的方法来解决这个问题。

关于Java Swing : component that resizes itself but doesn't influence the layout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3929513/

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