当前位置: 技术问答>java相关
一点java awt程序的调试过程(烂人专栏,大牛莫进)还有问题呀
来源: 互联网 发布时间:2015-05-06
本文导语: 鄙人偶得一本《java2 图形设计 卷I:AWT》(英文名:Graphic java 1.2 Msatering the JFC Volume I: AWT(3rd edition)),遂 喜不自胜。又因要做图像处理类的毕业设计,故急不可待的敲入一个 例程,如下: ----------------------------...
鄙人偶得一本《java2 图形设计 卷I:AWT》(英文名:Graphic
java 1.2 Msatering the JFC Volume I: AWT(3rd edition)),遂
喜不自胜。又因要做图像处理类的毕业设计,故急不可待的敲入一个
例程,如下:
-----------------------------------------------------------
//Getimage.java
import java.applet.Applet;
import java.awt.*;
public class Getimage extends Applet{
public void init(){
image=getImage(getCodeBase(),"xxx.gif");
try{
MediaTracker mt=new MediaTracker(this);
mt.addImage(image,0);
mt.waitForID(0);
}
catch(InterruptedException e){
e.printStackTrace();
}
}
public void paint(Graphics g){
g.drawImage(image,0,0,this);
}
}
------------------------------------------------------------
接着执行:
c:jdk1.3binjavac -g c:sampleimageGetimage.java
却发现N个错误!!!(N=3),as following:
------------------------------------------------------------
c:Getimage.java:6: 不能解析符号
符号:变量 image
位置: 类 in Getimage
image=getImage(getCodeBase(),"xxx.gif");
^
e:Getimage.java:9:不能解析符号
符号:变量 image
位置:类 in Getimage
mt.addImage(image,0);
^
e:Getimage.java:17:不能解析符号
符号:变量 image
位置:类 in Getimage
g.drawImage(image,0,0,this);
^
3个错误
--------------------------------------------------------------
我发现全部是image的错误,然后赶紧查手册,发现要用image,必须导入
java.awt.Image类;于是添加一句"import java.awt.Image;"
再次调试,结果大失所望,依旧是:
--------------------------------------------------------------
c:Getimage.java:7: 不能解析符号
符号:变量 image
位置: 类 in Getimage
image=getImage(getCodeBase(),"xxx.gif");
^
e:Getimage.java:10:不能解析符号
符号:变量 image
位置:类 in Getimage
mt.addImage(image,0);
^
e:Getimage.java:18:不能解析符号
符号:变量 image
位置:类 in Getimage
g.drawImage(image,0,0,this);
^
3个错误
---------------------------------------------------------------
仔细观察,发现image没有被定义,于是将image=getImage(getCodeBase(),"xxx.gif");
前面添加Image,成为" Image image=getImage(getCodeBase(),"xxx.gif");"
再次调试,发现只有一个错误,如下:
e:Getimage.java:18:不能解析符号
符号:变量 image
位置:类 in Getimage
g.drawImage(image,0,0,this);
1个错误
好高兴呀。再接再厉,发现还是image的错误,从"不能解析符号"这句话
可以看出,在paint()函数中,编译器仍旧不能识别image变量,所以估计
是当前image不是全局变量,所以动一番大手术。结果为:
---------------------------------------------------------------
import java.applet.Applet;
import java.awt.*;
import java.awt.Image;
public class Getimage extends Applet{
private Image image;
public void init(){
image=getImage(getCodeBase(),"xxx.gif");
try{
MediaTracker mt=new MediaTracker(this);
mt.addImage(image,0);
mt.waitForID(0);
}
catch(InterruptedException e){
e.printStackTrace();
}
}
public void paint(Graphics g){
g.drawImage(image,0,0,this);
}
}
----------------------------------------------------------------
编译后没有错误,通过!然后再去掉"import.awt.Image;"语句,发现
照样可以通过编译,所以刚开始的时候判断是错误的,这里不是关键,
实际上"import java.awt.*;"已经将类"Image"导入。据此推测语句"
import java.applet.Applet;"完全可以改为:"import java.applet.*;"
,结果如我所想,照常通过。那照此类推,语句"import java.applet.*;"
完全可以改成"import java.*;"了,事实是这样的吗?测试了一下,问题
出来了,错误信息一大堆,大概的意思就是这个程序段中出现的所有的类
、变量、函数皆不能被识别。为什么呢?想不通,谁能替俺解答?100分
送上!
java 1.2 Msatering the JFC Volume I: AWT(3rd edition)),遂
喜不自胜。又因要做图像处理类的毕业设计,故急不可待的敲入一个
例程,如下:
-----------------------------------------------------------
//Getimage.java
import java.applet.Applet;
import java.awt.*;
public class Getimage extends Applet{
public void init(){
image=getImage(getCodeBase(),"xxx.gif");
try{
MediaTracker mt=new MediaTracker(this);
mt.addImage(image,0);
mt.waitForID(0);
}
catch(InterruptedException e){
e.printStackTrace();
}
}
public void paint(Graphics g){
g.drawImage(image,0,0,this);
}
}
------------------------------------------------------------
接着执行:
c:jdk1.3binjavac -g c:sampleimageGetimage.java
却发现N个错误!!!(N=3),as following:
------------------------------------------------------------
c:Getimage.java:6: 不能解析符号
符号:变量 image
位置: 类 in Getimage
image=getImage(getCodeBase(),"xxx.gif");
^
e:Getimage.java:9:不能解析符号
符号:变量 image
位置:类 in Getimage
mt.addImage(image,0);
^
e:Getimage.java:17:不能解析符号
符号:变量 image
位置:类 in Getimage
g.drawImage(image,0,0,this);
^
3个错误
--------------------------------------------------------------
我发现全部是image的错误,然后赶紧查手册,发现要用image,必须导入
java.awt.Image类;于是添加一句"import java.awt.Image;"
再次调试,结果大失所望,依旧是:
--------------------------------------------------------------
c:Getimage.java:7: 不能解析符号
符号:变量 image
位置: 类 in Getimage
image=getImage(getCodeBase(),"xxx.gif");
^
e:Getimage.java:10:不能解析符号
符号:变量 image
位置:类 in Getimage
mt.addImage(image,0);
^
e:Getimage.java:18:不能解析符号
符号:变量 image
位置:类 in Getimage
g.drawImage(image,0,0,this);
^
3个错误
---------------------------------------------------------------
仔细观察,发现image没有被定义,于是将image=getImage(getCodeBase(),"xxx.gif");
前面添加Image,成为" Image image=getImage(getCodeBase(),"xxx.gif");"
再次调试,发现只有一个错误,如下:
e:Getimage.java:18:不能解析符号
符号:变量 image
位置:类 in Getimage
g.drawImage(image,0,0,this);
1个错误
好高兴呀。再接再厉,发现还是image的错误,从"不能解析符号"这句话
可以看出,在paint()函数中,编译器仍旧不能识别image变量,所以估计
是当前image不是全局变量,所以动一番大手术。结果为:
---------------------------------------------------------------
import java.applet.Applet;
import java.awt.*;
import java.awt.Image;
public class Getimage extends Applet{
private Image image;
public void init(){
image=getImage(getCodeBase(),"xxx.gif");
try{
MediaTracker mt=new MediaTracker(this);
mt.addImage(image,0);
mt.waitForID(0);
}
catch(InterruptedException e){
e.printStackTrace();
}
}
public void paint(Graphics g){
g.drawImage(image,0,0,this);
}
}
----------------------------------------------------------------
编译后没有错误,通过!然后再去掉"import.awt.Image;"语句,发现
照样可以通过编译,所以刚开始的时候判断是错误的,这里不是关键,
实际上"import java.awt.*;"已经将类"Image"导入。据此推测语句"
import java.applet.Applet;"完全可以改为:"import java.applet.*;"
,结果如我所想,照常通过。那照此类推,语句"import java.applet.*;"
完全可以改成"import java.*;"了,事实是这样的吗?测试了一下,问题
出来了,错误信息一大堆,大概的意思就是这个程序段中出现的所有的类
、变量、函数皆不能被识别。为什么呢?想不通,谁能替俺解答?100分
送上!
|
你想在 void(Graphic g) image, 不妨把 image 成全程变量.
//Getimage.java
import java.applet.Applet;
import java.awt.*;
public class Getimage extends Applet{
Image image;
public void init(){
Image image=getImage(getCodeBase(),"xxx.gif");
try{
MediaTracker mt=new MediaTracker(this);
mt.addImage(image,0);
mt.waitForID(0);
}
catch(InterruptedException e){
e.printStackTrace();
}
}
public void paint(Graphics g){
g.drawImage(image,0,0,this);
}
}
//Getimage.java
import java.applet.Applet;
import java.awt.*;
public class Getimage extends Applet{
Image image;
public void init(){
Image image=getImage(getCodeBase(),"xxx.gif");
try{
MediaTracker mt=new MediaTracker(this);
mt.addImage(image,0);
mt.waitForID(0);
}
catch(InterruptedException e){
e.printStackTrace();
}
}
public void paint(Graphics g){
g.drawImage(image,0,0,this);
}
}
|
关于import里的.*
打个比方说,
我认为可以看做类似树状结构,
xxx.*只能代表xxx树的下一级。
import xxxxx.*;只是包含一层里的所有类,但不再含类的子类
故import java.*;没有导入java.applete.Applete;
而import java.applete.*;则有。
打个比方说,
我认为可以看做类似树状结构,
xxx.*只能代表xxx树的下一级。
import xxxxx.*;只是包含一层里的所有类,但不再含类的子类
故import java.*;没有导入java.applete.Applete;
而import java.applete.*;则有。
|
no error!
see page-39,please!
sub of all code.
:->>
see page-39,please!
sub of all code.
:->>