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

Java-将JPanel设置为固定大小并将其缩放到窗口,java,swing,graphics,Java,Swing,Graphics,我希望我的JPanel的大小固定为800x600,但如果JFrame大小发生变化,JPanel将进行缩放,保持原始大小为800x600。例如,若我在JPanel上绘制一个字符串,并将窗口拉伸2次,那个么该字符串也将拉伸2次 我试过了 g2d.scale(frame.getWidth() / 800, frame.getHeight() / 600); 但如果我将帧宽度更改为0.5,背景上的颜色(在g2d.scale之后使用g2d.fillRect)将只覆盖帧的一半。我在Swing中可以说的第一

我希望我的JPanel的大小固定为800x600,但如果JFrame大小发生变化,JPanel将进行缩放,保持原始大小为800x600。例如,若我在JPanel上绘制一个字符串,并将窗口拉伸2次,那个么该字符串也将拉伸2次

我试过了

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

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

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


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

找到了解决此问题的方法

在创建面板时创建了BuffereImage,即。e

bimg = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);
我从中得到了图像。e

g2d = bimg.createGraphics();
对其执行所有绘制操作,然后在JPanel上绘制缩放图像

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

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

或者没有发生。我正在制作一个游戏,而不是一个普通的应用程序,所以我当然会使用重新绘制。