欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

关于gui的一个有关问题(分不多了,请谅解)

更新时间: 2014-05-14 23:41:32 责任编辑: Author_N3

 

关于GUI的一个问题(分不多了,请谅解)
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class MyMouseAdapter{
  public static void main(String args[]) {
  new MyFrame("drawing...");
  }
}

class MyFrame extends Frame {
  ArrayList points = null;
  MyFrame(String s) {
  super(s);
  points = new ArrayList(); 
  setLayout(null);
  setBounds(300,300,400,300); 
  this.setBackground(new Color(204,204,255));
  setVisible(true);
  this.addMouseListener(new Monitor());
}

public void paint(Graphics g) {
  Iterator i = points.iterator();
  while(i.hasNext()){
  Point p = (Point)i.next();
  g.setColor(Color.BLUE);
  g.fillOval(p.x,p.y,10,10);
  }
  }
  
  public void addPoint(Point p){
  points.add(p);
  }
}

class Monitor extends MouseAdapter {
  public void mousePressed(MouseEvent e) {
  MyFrame f = (MyFrame)e.getSource();
  f.addPoint(new Point(e.getX(),e.getY()));
  f.repaint();
  }
}

其中,MyFrame f = (MyFrame)e.getSource();这句我不是搞的很明白,他将MouseEvent的信息通过类型强制转换赋给了MyFrame类型,给我感觉getSource返回的类容肯定和MyFrame的类容不一样,怎么能这样赋值呢,而且当我将该句改为MyFrame f=new MyFrame(),每次点击鼠标的时候会重新生成窗口这个我可以理解,但是MyFrame f = (MyFrame)e.getSource();这句为什么不会,而且,当该次点击完了之后,下次再发生点击时间的时候,不重新生成MyFrame窗口,并且里面的信息都在。

--参考方法--
e.getSource是获取事件源对象,你点在JFrame上返回就是当前的JFrame对象
--参考方法--
只不过getSource方法本身返回Object,所以你必须做一个向下类型转换,要不然就没办法调用JFrame的方法
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-05-14 23:41:32
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/318276/
本文WWW.DOC100.NET DOC100.NET版权所有。