java - 通过重采样调整 JPanel 的大小以保留内容

标签 java swing resize panel jpanel

考虑到我已经编写了一个包含许多不同组件的 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/

相关文章:

ios - CollectionViewCell 大小问题

Java GUI 调整图像大小

java - 我需要在表中单击 Ctrl+A 时启用按钮

javascript - 重新打开切换开关后重新加载页面

java - 将 JTextArea 格式化为表格格式

java - java定时器有问题吗?

java - JButton在 Action 中执行

google-chrome - Chrome 扩展的替代方案 "Window Resizer"

java - Android - 从 Intent 过滤器解析短网址

java - 如何使用Mockito验证一个方法在另一个方法中被调用?