package awt.testMouse;
import java.awt.*;
import java.awt.event.*;
import java.util.*;//import WindowMonitor.Monitor1;public class TestMouse {
public static void main(String[] args) {
new MFrame();
}
}class MFrame extends Frame {
ArrayList points = null;
MFrame() {
points = new ArrayList();
setLayout(null);
setBounds(200,200,500,500);
setVisible(true);
addWindowListener(new Monitor1());
addMouseListener(new MMonitor());
}
public void paint(Graphics g) {
Iterator i = points.iterator();
while(i.hasNext()){
Point p =(Point)i.next();
g.setColor(Color.red);
g.fillOval(p.x, p.y, 20, 20);
}
}
public void addPoint(Point p) {
points.add(p);
}
}class MMonitor extends MouseAdapter {
public void mousePressed(MouseEvent e) {
//Point p1 = e.getPoint(); //这才是更好的返回点坐标嘛,找到了,但是为什么只能点一个点呢?
//MFrame f = new MFrame();//难道说这个没点一下,会创建一个新Frame,而下面的不会更换
//f.addPoint(p1);
MFrame f = (MFrame)e.getSource(); //添加到什么上,什么就是事件源
//f.addPoint(new Point(e.getX(),e.getY()));//应该有个方法可以代替的,忘记了
f.addPoint(e.getPoint());
f.repaint();
//f.repaint();
}public class Monitor1 extends WindowAdapter {
public void windowClosing(WindowEvent e){
f.setVisible(false);
System.exit(0);
}
Frame f = new Frame();
}
}MFrame f = new MFrame();
MFrame f = (MFrame)e.getSource();
这两句为什么产生的效果怎么不一样呢?Frame
import java.awt.*;
import java.awt.event.*;
import java.util.*;//import WindowMonitor.Monitor1;public class TestMouse {
public static void main(String[] args) {
new MFrame();
}
}class MFrame extends Frame {
ArrayList points = null;
MFrame() {
points = new ArrayList();
setLayout(null);
setBounds(200,200,500,500);
setVisible(true);
addWindowListener(new Monitor1());
addMouseListener(new MMonitor());
}
public void paint(Graphics g) {
Iterator i = points.iterator();
while(i.hasNext()){
Point p =(Point)i.next();
g.setColor(Color.red);
g.fillOval(p.x, p.y, 20, 20);
}
}
public void addPoint(Point p) {
points.add(p);
}
}class MMonitor extends MouseAdapter {
public void mousePressed(MouseEvent e) {
//Point p1 = e.getPoint(); //这才是更好的返回点坐标嘛,找到了,但是为什么只能点一个点呢?
//MFrame f = new MFrame();//难道说这个没点一下,会创建一个新Frame,而下面的不会更换
//f.addPoint(p1);
MFrame f = (MFrame)e.getSource(); //添加到什么上,什么就是事件源
//f.addPoint(new Point(e.getX(),e.getY()));//应该有个方法可以代替的,忘记了
f.addPoint(e.getPoint());
f.repaint();
//f.repaint();
}public class Monitor1 extends WindowAdapter {
public void windowClosing(WindowEvent e){
f.setVisible(false);
System.exit(0);
}
Frame f = new Frame();
}
}MFrame f = new MFrame();
MFrame f = (MFrame)e.getSource();
这两句为什么产生的效果怎么不一样呢?Frame
解决方案 »
- 继承与构造函数,糊涂了
- 网络爬出老是报连接超时。急求解决办法!!!!!!!!!!
- 我的这段代码为什么中文会乱码 ?
- 快来看看呀!一片未开发的圣地呀!多多指导。
- 最近用网格袋布局,仿WINXP做一个计算器,出了一点问题,不知那个7怎么会跑上去!请各位指点!!
- 点对点的信息传递,怎么实现?
- 公司要让有一年Delphi开发经验的我改用JAVA开发应用程序,也就是Application,而且是有一定规模的,原来Delphi代码就30万行,心烦,放分
- 有没有非教育网下载visualage for java 4.0
- 一个关于非静态变量的上下文引用?多谢各位!
- 如何给一个多维数组赋值(不要在出始化定义的时候)?String[][] a;
- 面试算法题 《最长路径》
- 这个题怎么做,用循环
package Testkey;
import java.awt.*;
import java.awt.event.*;//import WindowMonitor.Monitor1;
public class TestKey {
public static void main(String[] args) {
new KFrame().launchFrame();
}
}class KFrame extends Frame {
/**
*
*/
//private static final long serialVersionUID = 1L; public void launchFrame() {
setLayout(null);
setBounds(200,200,200,200);
addKeyListener(new KeyMonitor());
setVisible(true);
addWindowListener(new Monitor1());
}
}class KeyMonitor extends KeyAdapter {
public void keyPressed(KeyEvent e) {
//System.out.println("OK");
//KFrame kf =(KFrame)e.getSource(); //试了这两句,没反应出问题
//KFrame kf = new KFrame();
int k = e.getKeyCode();
if(k == KeyEvent.VK_UP) {
System.out.println("up");
}
}
public class Monitor1 extends WindowAdapter {
public void windowClosing(WindowEvent e){
f.setVisible(false);
System.exit(0);
}
Frame f = new Frame();
}
}
MFrame f2 = (MFrame)e.getSource();
这两句为什么产生的效果怎么不一样呢? f1是新开辟了块内存,和以前的同类的对象没有任何关系
f2是触发事件的事件源
肯定不一样啊
有点小懂了,再问个问题
MFrame f2 = (MFrame)e.getSource();
e肯定是个MouseActionEvent,怎么就可以转换成MFrame,有点糊涂了。
再说,e如果分别是,Button,TextField,Window,Key,等,也都可以这样
MFrame f2 = (MFrame)e.getSource(); 做吗?