用jpanel 做画布,调节大小,图片不显示。只知道每次调节JFrame大小,都会重新调用repaint方法,所以图片会一闪而过,怎么样调节大小后Jpanel的图像依然显示呢?代码如下:import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;
public class MyJPanel extends JPanel {
Image image;
public MyJPanel(){
}
public void paintComponent(Graphics g,Image image)
{
if(image==null){
}
else{
this.image=image;
super.paintComponent(g);
g.drawImage(image, 0, 0,this.getWidth(),this.getHeight(),null);
}
}
}
主程序调用放方法:picArea.paintComponent(picArea.getGraphics(),icon.getImage());图片显示,可是每次调节窗口大小,jpanel变成空白。请问有解决的方法吗?
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;
public class MyJPanel extends JPanel {
Image image;
public MyJPanel(){
}
public void paintComponent(Graphics g,Image image)
{
if(image==null){
}
else{
this.image=image;
super.paintComponent(g);
g.drawImage(image, 0, 0,this.getWidth(),this.getHeight(),null);
}
}
}
主程序调用放方法:picArea.paintComponent(picArea.getGraphics(),icon.getImage());图片显示,可是每次调节窗口大小,jpanel变成空白。请问有解决的方法吗?
解决方案 »
- 有关股票分析系统的问题 急等
- 运行servlet,调用this.getServletConfig().getInitParameter("Name"),出现null
- 初学spring和hibernate,遇到问题,大侠们帮帮忙!
- spring+hibernate+web service配置多数据源
- java继承映射的问题
- struts怎么用着觉得不是特别听话啊?:)
- 求教weblogic8.1中应用运行时找寻一个class的顺序
- 模糊中
- 请问在Jbuilder 7中,怎样为一个EJB工程指定JNDI名字??
- 我的反转排序错在哪儿 大神们帮帮忙
- JSONObject cannot be resolved to a type
- java.lang.UnsatisfiedLinkError: no jacob in java.library.path
public void paintComponent(Graphics g,Image image)
{
if(image==null){ }
else{
this.image=image;
super.paintComponent(g);
g.drawImage(image, 0, 0,this.getWidth(),this.getHeight(),null);
}
}
每次调节窗口大小调用此方法,必须重写此方法
paintComponent(Graphics g)
新增setImage(Image image) 方法传入image参数,就可以了。
/**
* 初始化图像面板:添加事件监听器
*/
public ImagePanel(){
mouseListener = new ImagePanelMouseAction();
montionListener = new ImagePanelMouseMotionAction();
addMouseListener(mouseListener);
addMouseMotionListener(montionListener);
}
/**
* 覆盖父类的画图方法
*/
public void paintComponent(Graphics g){
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();//获取屏幕尺寸
int w = getSize().width;//获取窗体宽度
int h = getSize().height;//获取窗体高度
int x = (dim.width-w)/2;
int y = (dim.height-h)/2;
setLocation(x,y);//将窗体移到屏幕中间
g.drawImage(img, 0,0,null);
}
/**
* 设置图像
* @param image
*/
public void setImg(BufferedImage image){
img = image;
}