这个程序加上this就出错,这是什么原因?

RUBY_uu 2006-03-23 08:54:12
import java.awt.*;
import java.awt.event.*;
public class DrawLine extends Frame
{ private int orgx,orgy,endx,endy;

public static void main(String []args)
{
DrawLine d1=new DrawLine();
d1.init();
}
public void paint(Graphics g)
{
g.drawLine(orgx,orgy,endx,endy);
}
public void init()
{
this.setSize(300,300);
this.setVisible(true);
this.addMouseListener(new MouseAdapter()
{

public void mousePressed(MouseEvent e)
{
orgx=e.getX();
orgy=e.getY();
}
public void mouseReleased(MouseEvent e)
{
endx=e.getX();
endy=e.getY();
Graphics g=this.getGraphics();//这里,去掉this就能编译通过,加上就错
g.setColor(Color.red);
g.setFont(new Font("隶书",Font.ITALIC|Font.BOLD,30));
g.drawString(new String(orgx+","+orgy),orgx,orgy);
g.drawString(new String(e.getX()+","+e.getY()),e.getX(),e.getY());
g.drawLine(orgx,orgy,e.getX(),e.getY());
}

});
}
}

错误信息:
DrawLine.java:31: 找不到符号
符号: 方法 getGraphics()
Graphics g=this.getGraphics();
^
1 错误
我看不出错在哪里,谁知道问题出在哪儿?

谢谢!!
...全文
101 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
usmcno1 2006-03-24
  • 打赏
  • 举报
回复
它是个内部类啊!当然不能用this了!
不信你编译后你回发现你的class目录回有个DrawLine$1.class文件
贝壳鱼 2006-03-23
  • 打赏
  • 举报
回复
内部类是作为外部类的成员来看待,它使用了外部类的父类方法,当然返回的是外部类的Graphics对象呗
RUBY_uu 2006-03-23
  • 打赏
  • 举报
回复
那我把this去掉,getGraphics() 返回的是哪个对象的Graphics对象呢?

谢谢!!
成富 2006-03-23
  • 打赏
  • 举报
回复
就是在内部类里面的,this表示的是MouseAdapter
贝壳鱼 2006-03-23
  • 打赏
  • 举报
回复
getGraphics() 在内部类里,不知是否这个原因哦

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧