2011-09-26 60 views
2

我正在使用Java Swing来制作GUI。使图像跟随框架尺寸

我需要向用户展示一些打印在图像上的信息(它们在运行时生成为BufferedImage对象)。

我在做什么:我把JPanelJFrame,并且当系统调用paint(Graphics g)方法我借鉴g图像 - >(g.drawImage(buffImg,0,0,null))

我不喜欢的事情是:当我调整框架的大小时,图像保持不变,我只扩展视野。当我调整它的大小时,我想让图像与框架“展开”。

有没有一种有效的方法呢? (我想我可以创建一个新的调整大小的图像,帧的大小,每次刷新图形,但我每秒更新图像几次,所以这将是一个非常繁重的任务..)

+0

1)使用驼峰的属性。 2)对于'JPanel'中的自定义绘画,重写'paintComponent()',以便在'JFrame'中自定义绘画......只是不要。使用'JComponent'或'JPanel' 3)*“这将是一项非常繁重的任务”*性能测试胜过猜测。 –

+0

1)right:D 2)这就是我所做的,我只画jpanel,但由于gui在我更新它时不会刷新图像,所以我强制更新像这样:'g = panel.getGraphics() ; panel.paint(g);'...不优雅,但工作得很好:D – Pronte

回答

5

变化:

g.drawImage(BuffImg,0,0,null): 

要:

g.drawImage(BuffImg,0,0,getWidth(),getHeight(),this): 
+1

真的不能相信它是那么容易.. 我已经读过Graphics类的javadoc,但我误解了: 我思想“绘制指定图像的大小,已经缩放到指定矩形内。”意思是“仅画出图像的一部分” 非常感谢! – Pronte

+1

不用担心。很高兴你已经检查过Java文档(他们是一个很好的资源,但有时候我误解了我读过的东西),并且很高兴你能对它进行排序。 :-) –