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怎么又是隐含指针了呢?我真是很糊涂啊,请耐心教教我! 展开
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怎么又是隐含指针了呢?我真是很糊涂啊,请耐心教教我! 展开
7个回答
展开全部
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了
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了
展开全部
this是系统的一个隐含指针,指向当前程序所在的对象。这是个指针,所以你就不能使用对象名来代替了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
简单说:只能在类里面使用,this在哪个类里使用就是指那个类;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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作为一门面向对象的语言,平时应该多关注面向对象的特性和一些规范
个人把代码做了一下修改,不知是否满足需要:
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作为一门面向对象的语言,平时应该多关注面向对象的特性和一些规范
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
但为什么运行完后
那窗口关不掉呢?
必须 ctrl + alt + del 才行
是不还缺少一个关闭处理方面的东西?
那窗口关不掉呢?
必须 ctrl + alt + del 才行
是不还缺少一个关闭处理方面的东西?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询