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

时间:2016-02-27 15:29:14

标签: java swing graphics

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

我试过

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

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

2 个答案:

答案 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上绘制的背景和字符串被拉伸,保持原始大小相同。