2016-02-27 317 views
0

我想让我的JPanel的大小固定为800x600,但是如果JFrame大小发生更改,JPanel将按比例缩放,保持原始大小为800x600。例如,如果我在JPanel上画一个字符串,并拉伸窗口2次,字符串也会拉伸2次。Java - 将JPanel设置为固定大小并将其缩放到窗口

我试图

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

但是,如果我改变帧的宽度为0.5,在背景颜色(用g2d.scaleg2d.fillRect)将仅覆盖帧的一半。

+1

[mcve]或它没有发生。 –

回答

0

找到了解决这个问题的办法。

在创建Panel,i时创建BufferedImage。即

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

得到了图形,我。即

g2d = bimg.createGraphics(); 

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

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

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

0

我可以在Swing中说的第一件事,绝不会自己绘制并使用LayoutManager进行布局。当你真的需要自己绘制时,从原始创建一个新的Graphics2d并在使用后进行处理。在这个图形上,你可以设置你的属性。

起初我会考虑把面板放在框架内的BorderLayout(中心)。没有你的代码,很难知道如何帮助你。

+0

我正在制作游戏,而不是常规应用程序,所以我当然会使用重绘。 – BurnyDaKath

相关问题