我希望我的JPanel固定大小为800x600,但如果JFrame大小发生变化,JPanel会缩放,保持800x600的原始大小。例如,如果我在JPanel上绘制一个字符串,并且拉伸窗口2次,那么字符串也将被拉伸2次。
我试过
g2d.scale(frame.getWidth() / 800, frame.getHeight() / 600);
但如果我将帧的宽度更改为0.5,则背景上的颜色(在g2d.fillRect
之后使用g2d.scale
)将仅覆盖帧的一半。
答案 0 :(得分:0)
首先我可以在Swing中说,不要自己画画并使用LayoutManager进行布局。当你真的需要自己画画时,从原版创建一个新的Graphics2d并在使用后进行处理。在此图形上,您可以设置属性。
首先,我会考虑将Panel放在Frame中的BorderLayout(Center)中。没有你的代码,很难知道如何帮助你。
答案 1 :(得分:0)
找到解决此问题的方法。
创建Panel时创建BufferedImage,i。即
bimg = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);
得到它的图形,我。即
g2d = bimg.createGraphics();
对其执行所有绘制操作,然后在JPanel上绘制缩放图像。
g.drawImage(bimg, 0, 0, getWidth(), getHeight(), null);
(其中getXX()返回面板的XX)。调整窗口大小后,它会清楚地看到在BufferedImage上绘制的背景和字符串被拉伸,保持原始大小相同。