java中this的用法?

java中this的用法?importjava.awt.*;importjava.awt.event.*;//TwoListen类同时实现MouseMotionListe... java中this的用法?

import java.awt.*;
import java.awt.event.*;
//TwoListen类同时实现MouseMotionListener和MouseListener两个接口
public class TwoListen implements MouseMotionListener,MouseListener
{
private Frame f;
private TextField tf;

public static void main(String[] args)
{
TwoListen two=new TwoListen();
two.go();
}
public void go()
{
f=new Frame("Two listeners example");
f.add(new Label("Clic and drag the mouse"),"North");
tf=new TextField(30);
f.add(tf,"South");
//注册监听程序
f.addMouseMotionListener(this);//(************************)
f.addMouseListener(this); //(************************)
f.setSize(300,300);
f.setVisible(true); //(************************)
}
//实现MouseMotionListener接口中的方法
public void mouseDragged(MouseEvent e)
{
String s="Mouse dragging:X="+e.getX()+"Y="+e.getY();
tf.setText(s);
}
public void mouseMoved(MouseEvent e){}
//实现MouseListener接口中的方法
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e)
{
String s="The mouse entered";
tf.setText(s);
}
public void mouseExited(MouseEvent e)
{
String s="The mouse has left the building";
tf.setText(s);
}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
}

请问我用//(*******************)标记的那三句中this具体是什么意思?指代什么的,能用什么替换吗?
我原来认为this是用来表示生成的对象的,那么这里生成的对象不是two吗?怎么我用two替换后就不能运行了呢?
哪位老兄知道的请解释详细一点,请把我上边的几个问题都回答一下,要是我觉得答案很好的话,会再追加二十分,
谢谢.
请问这里的this能用什么替换,一定要用this吗?(如果知道能用什么替换的话,我可能比较好理解一点)如果是指针的话,请说一下指针指向的是什么,具体是怎么指向的?我刚学JAVA,请仔细说一下,谢谢。还有,JAVA中不是不用指针吗,那this怎么又是隐含指针了呢?我真是很糊涂啊,请耐心教教我!
展开
 我来答
小鱼技艺
2008-07-28 · TA获得超过2990个赞
知道小有建树答主
回答量:339
采纳率:0%
帮助的人:136万
展开全部
1、this指向当前类的对象,也就是TwoListen类的对象。由于MouseMotionListener,MouseListener 都是接口,因此
f.addMouseMotionListener(this);//(************************)
f.addMouseListener(this); //(************************)
中分别需要一个实现了MouseMotionListener和MouseListener接口的类的实例。

在本例子中 TwoListen类都实现了这两个接口,因此可以用本类的实例来做参数。或者新建一个实现了这两个接口的类,再用这个类的实例做参数。

2、在该例子中,this指向生成的two对象。为什么用two替换后就不能运行了呢?
因为two是在main方法中定义的,是局部变量;而在go方法中并不能访问其他方法中定义的局部变量。
如果把two定义为全局变量,如:
static TwoListen two;
再在main方法中定义:
two=new TwoListen();

这时就可以用two代替this了
guojingcha
2008-07-28 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.3万
采纳率:42%
帮助的人:1亿
展开全部
this是系统的一个隐含指针,指向当前程序所在的对象。这是个指针,所以你就不能使用对象名来代替了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
怀新垒fb
2008-07-28 · TA获得超过378个赞
知道小有建树答主
回答量:391
采纳率:100%
帮助的人:363万
展开全部
简单说:只能在类里面使用,this在哪个类里使用就是指那个类;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
WidowsSeven
2008-07-31
知道答主
回答量:8
采纳率:0%
帮助的人:0
展开全部
this在Java里面是一个很奇特的东东,用好了会很强大。在Java里面是没有指针的概念的,这一点是我可以肯定的。只是有些时候会有类似于指针的东西。这里面this所指的是全局的当前这个类。
个人把代码做了一下修改,不知是否满足需要:
import java.awt.*;
import java.awt.event.*;

import javax.swing.JFrame;

//TwoListen类同时实现MouseMotionListener和MouseListener两个接口
public class TwoListen extends JFrame implements MouseMotionListener,
MouseListener {
private TextField tf;
private String s;

public TwoListen() {
super("Two listeners example");
getContentPane().add(new Label("Clic and drag the mouse"),
BorderLayout.NORTH);
tf = new TextField(30);
tf.setEditable(false);
getContentPane().add(tf, BorderLayout.SOUTH);
// 注册监听程序
addMouseMotionListener(this);//(************************)
addMouseListener(this); //(************************)
setSize(300, 300);
setVisible(true); //(************************)
}

// 实现MouseMotionListener接口中的方法
public void mouseDragged(MouseEvent e) {
s = "Mouse dragging:X=" + e.getX() + "Y=" + e.getY();
tf.setText(s);
}

public void mouseMoved(MouseEvent e) {
}

// 实现MouseListener接口中的方法
public void mouseClicked(MouseEvent e) {
}

public void mouseEntered(MouseEvent e) {
s = "The mouse entered";
tf.setText(s);
}

public void mouseExited(MouseEvent e) {
s = "The mouse has left the building";
tf.setText(s);
}

public void mousePressed(MouseEvent e) {
}

public void mouseReleased(MouseEvent e) {
}

public static void main(String[] args) {
TwoListen two = new TwoListen();
two.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}
加入一点面向对象的思想,Java作为一门面向对象的语言,平时应该多关注面向对象的特性和一些规范
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xmaoo
2008-07-28
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
但为什么运行完后
那窗口关不掉呢?
必须 ctrl + alt + del 才行
是不还缺少一个关闭处理方面的东西?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bzb3
2008-07-30
知道答主
回答量:82
采纳率:0%
帮助的人:0
展开全部
THIS为当前所用的类
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式