由于图象大小比panel要小,而我希望让图片适应panel的大小,所以用Bufferedimage来得到与panel一样大的图象.现在一切都实现了,都没问题了,图象效果也很好.就是有一个小问题:图象所在的F...
由于图象大小比panel要小,而我希望让图片适应panel的大小,所以用Bufferedimage来得到与panel一样大的图象.现在一切都实现了,都没问题了,图象效果也很好.就是有一个小问题:
图象所在的Frame对其他的frame产生了干扰,具体干扰效果是:此frame像个橡皮一样,慢慢的移动它,当他覆盖了其他frame某部分后再移开,那么那部分该显示的东西都不显示了,要让其重新显示只需把有图象的frame最小化那么其他的frame将变得正常.
我应该说的比较清楚了,请高手为我解惑.
一.到底出现这种问题的原因是什么?
二.我应该怎么解决它?最好给出几句关键代码(要用的方法什么的)
如果真能解决我的问题我再附加20分.
千万注意:我是image加到 panel再加到 frame中的,我希望: 一.不论图片多大总能填满整个frame,而frame大小不变.(图片小了就扩大图片,反之缩小)
二,当在frame中能看见图片后,我用鼠标拉大或缩小frame,图片跟着变化,总之能填满frame.(其实这一点我就是让frame.add(panel.BorderLayout.CENTER)实现的).(因为图片能填满panel,我只需让panel填满frame即可.)
有个关于Bufferedimage的方法(就是使图片大小适应panel大小的方法)位于继承JPanel的类中,函数如下:可能它有问题:::::::(我说的很罗嗦啊,但也很详细了)
public void paint(Graphics g){
try {
src=ImageIO.read(new File("D:/2.jpg"));
//src = src1;
int width = this.getWidth();
int height = this.getHeight();
image = src.getScaledInstance(width, height, Image.SCALE_REPLICATE) ;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
g.drawImage( image, 0, 0,this);
//image.flush();
}
展开