Java - 将 JPanel 设置为固定大小并将其缩放到窗口


我希望我的 JPanel 固定大小为 800x600,

但如果 JFrame 大小发生变化,JPanel 将缩放,保持 800x600 的原始大小。例如,如果我在 JPanel 上画一个字符串,并将窗口拉伸 2 次,字符串也会拉伸 2 次。

我试过了

g2d.scale(frame.getWidth() / 800, frame.getHeight() / 600);

但是如果我将框架宽度更改为 0.5,背景上的颜色(g2d.scale 之后g2d.fillRect使用)将仅覆盖框架的一半。

我在 Swing 中可以说的第一件事是,永远不要自己画画,而是使用 LayoutManager 进行布局。当您确实需要自己绘制时,请从原始版本创建一个新的 Graphics2d 并在使用后处理。在此图形上,您可以设置属性。

首先,我会考虑将面板放在框架内的边框布局(中心)中。没有你的代码,很难知道如何帮助你。

找到了这个问题的解决方案。

在创建面板时创建缓冲图像,即

bimg = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);

从中得到了图形,即。

g2d = bimg.createGraphics();

对其执行所有绘制操作,然后在 JPanel 上绘制缩放后的图像。

    g.drawImage(bimg, 0, 0, getWidth(), getHeight(), null);

其中 getXX() 返回面板的 XX)。调整窗口大小后,很明显,在 BufferedImage 上绘制的背景和字符串被拉伸,保持原始大小相同。

相关内容

  • 没有找到相关文章