java 一个简单的问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 22:10:41
import java.awt.Canvas;
import java.awt.Graphics;

import javax.swing.ImageIcon;

public class gameBack extends Canvas{
private ImageIcon imIc;
public gameBack(){
imIc = new ImageIcon("ps1.png");

System.out.println("canvas construction");
}
public void paint(Graphics g){
g.drawImage(imIc.getImage(), 0, 0, this);
System.out.println("canvas paint");
}
public static void main(String[] args) {
gameBack gb = new gameBack();
}
}

为什么paint()方法没有执行???
paint()方法不是会自动执行的吗??

楼上的都别乱讲,paint()方法是java事件分发线程调用,参数是由系统传入的
楼主的问题很简单,paint顾名思意就是画,而楼主你根本就没有让画板Canvas显示出来,就是说根本就没画这个控件当然就不会调用paint方法了
解决办法让控件显示gameBack gb = new gameBack(); gb.setVisible(true);这样就可以在console里看到打印语句,想要看到图片,你必须new一个顶层容器,比如说jframe,然后把这个Canvas加进去,再让jframe显示出来

public static void main(String[] args) {
gameBack gb = new gameBack();
gb.paint(Graphics g);
}

paint()虽然您写了,但是他只是一个单独的方法,没有和其他的任何方法有瓜葛,呵呵,当然不会有执行了,你必须要用gameBack()方法或者主方法来调用它。别忘了给它相应的参数啊,
即gb.paint(Graphics类型的参数);

不会执行的,必须要有主方法来调用!或者您用让其他的方法来调用它,但是调用她的方法还是要被主方法调用的!

好佩服jgjcq -

因为你没有调用, 只需要加上gb.paint(Graphics g)就可以了啊