考虑到我已经编写了一个包含许多不同组件的 JPanel
,有没有一种方法可以在面板上应用整体“扩展”功能,以便在我调整面板大小时,其中的所有内容都按比例拉伸(stretch) window ?
也就是说,如果我手动将窗口大小调整为原来的 1/4,则面板中的所有内容也应缩小 1/4,因此新面板只是第一个面板的放大版。鉴于我没有设计内部的各个组件来执行此操作(有很多),是否有任何简单的方法可以使面板以这种方式运行?
更新:为了更清楚我需要的解决方案,我将描述面板内容:
面板是某种“游戏”,具有单个空布局和数十个 ImageIcon 随时在屏幕上飞来飞去。 ImageIcons 是预加载的 PNG 文件,它们已经具有固定大小。当然,我可以手动调整每个 ImageIcon 的大小并根据窗口大小重新定位它们,但这将涉及重新编码许多组件。
没有按钮或文本需要担心,所以我真正想要的是某种“后处理”调整大小,其中面板简单地缩小由某些部分渲染的任何内容(想想在 Photoshop 中调整图像大小)。
最佳答案
当然,一个选择是完全放弃 swing,并使用一些使用任何 Graphics
自行绘制的第 3 方小部件组件库。然后,您可以在图像上绘制小部件并调整图像大小,或者,更好的是,对传递给库的图形对象应用转换。
如果您确实想坚持使用 swing,可以使用 SwingUtilities.paintComponent
方法,您可以使用该方法将 Panel
绘制到 BufferedImage
上,然后您可以调整其大小。 (我自己用它在游戏中的“ View ”之间做了一些不错的转换。)
问题当然是您需要以某种方式相应地翻译用户输入。我现在没有解决方案,但以上内容可能会以某种方式帮助您。
关于java - 通过重采样调整 JPanel 的大小以保留内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9921959/