java 一个简单的问题

[复制链接]
查看11 | 回复5 | 2008-7-4 20:53:18 | 显示全部楼层 |阅读模式
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()方法不是会自动执行的吗??

回复

使用道具 举报

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

使用道具 举报

千问 | 2008-7-4 20:53:18 | 显示全部楼层
public static void main(String[] args) {gameBack gb = new gameBack();gb.paint(Graphics g);}
回复

使用道具 举报

千问 | 2008-7-4 20:53:18 | 显示全部楼层
paint()虽然您写了,但是他只是一个单独的方法,没有和其他的任何方法有瓜葛,呵呵,当然不会有执行了,你必须要用gameBack()方法或者主方法来调用它。别忘了给它相应的参数啊,即gb.paint(Graphics类型的参数);不会执行的,必须要有主方法来调用!或者您用让其他的方法来调用它,但是调用她的方法还是要被主方法调用的!
回复

使用道具 举报

千问 | 2008-7-4 20:53:18 | 显示全部楼层
好佩服jgjcq -
回复

使用道具 举报

千问 | 2008-7-4 20:53:18 | 显示全部楼层
因为你没有调用, 只需要加上gb.paint(Graphics g)就可以了啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行