标题:请教一个简单的问题,程序中的this看不懂
只看楼主
huxiangwenhu
Rank: 4
等 级:业余侠客
威 望:1
帖 子:191
专家分:262
注 册:2010-6-1
结帖率:90.91%
已结贴  问题点数:20 回复次数:6 
请教一个简单的问题,程序中的this看不懂

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class huxiang extends Frame implements ActionListener{
    Label userName=new Label("姓名:");
    Label passWord=new Label("密码:");
    TextField text1=new TextField(12);
    TextField text2=new TextField(12);
    Button login=new Button("登录:");
    Button cancel=new Button("取消:");
    public huxiang(){
        super("登录示例");
        setLayout(new GridLayout(3,2));
        login.addActionListener(this);//这两个this是什么意思,请教,应该是两个实现接口的时间类对象啊
        cancel.addActionListener(this);
        add(userName);
        add(passWord);
        add(text1);
        add(text2);
        add(login);
        add(cancel);
        setSize(200,200);
        setLocation(200,200);
        }
        
    public static void main(String args[])
    {
        huxiang myframe=new huxiang();
        myframe.show();
        
    }
    public void actionPerformed(ActionEvent e){
        if(e.getSource()==login){
            String s1=this.text1.getText();
            String s2=this.text2.getText();
            if(s1.equals("")||s2.equals("")){
                System.out.println("请填写完整的信息...");
                }
            else if(s1.equals("huxiang")&&s2.equals("520014")){
                System.out.println("登录成功");
                }
            else
                System.out.println("登录失败");
            }
        if(e.getSource()==cancel){
            System.out.println("退出程序..");
            System.exit(0);
            }
        }
}
小弟新手,请大侠们帮忙看看那两个this,请尽量用通俗易懂的说话帮我解释下,谢谢了
搜索更多相关主题的帖子: import cancel public super 
2010-07-27 22:47
hsh_1987
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:92
专家分:343
注 册:2010-3-30
得分:8 
login.addActionListener(this);cancel.addActionListener(this);
这两个this指的都是当前对象(huxiang )。因为huxiang 实现了ActionListener接口,所以当前对象就是个ActionListener,可以用this代替当前Listener,当然你也可以new 出来。但此时没这个必要


努力很重要,决心比努力更重要...........
2010-07-28 01:32
huxiangwenhu
Rank: 4
等 级:业余侠客
威 望:1
帖 子:191
专家分:262
注 册:2010-6-1
得分:0 
回复 2楼 hsh_1987
我用new huxiang(),报错啊
2010-07-28 14:00
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
得分:4 
this代表本类的对象.

C#超级群 74862681,欢迎大家的到来!
2010-07-28 19:41
hsh_1987
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:92
专家分:343
注 册:2010-3-30
得分:8 
回复 3楼 huxiangwenhu
要看怎么new啊。在new的同时要保证两个对象是一致的。否则会报错:
如果你在Main方法里new 出一个对象,而在其它地方又new 出一个对象并把它做为listener,这时两个对象不同。就会报错。。必须要和main方法中的对象保持一致
如:
public class huxiang extends Frame implements ActionListener{
        Label userName=new Label("姓名:");
        Label passWord=new Label("密码:");
        TextField text1=new TextField(12);
        TextField text2=new TextField(12);
        Button login=new Button("登录:");
        Button cancel=new Button("取消:");
        
        public huxiang(){
      
            }
            
        public  void hux(huxiang h) {
            this.setTitle("登录示例");            
            setLayout(new GridLayout(3,2));
            login.addActionListener(h);//这两个this是什么意思,请教,应该是两个实现接口的时间类对象啊
            cancel.addActionListener(h);
            add(userName);
            add(passWord);
            add(text1);
            add(text2);
            add(login);
            add(cancel);
            setSize(200,200);
            setLocation(200,200);
        }

        public static void main(String args[])
        {
            huxiang myframe=new huxiang();
            myframe.hux(myframe);
            myframe.show();
            
        }
        public void actionPerformed(ActionEvent e){
            if(e.getSource()==login){
                String s1=this.text1.getText();
                String s2=this.text2.getText();
                if(s1.equals("")||s2.equals("")){
                    System.out.println("请填写完整的信息...");
                    }
                else if(s1.equals("huxiang")&&s2.equals("520014")){
                    System.out.println("登录成功");
                    }
                else
                    System.out.println("登录失败");
                }
            if(e.getSource()==cancel){
                System.out.println("退出程序..");
                System.exit(0);
                }
            }
    }
 

这个就没错。。。但对于这个程序来说是没必要的

努力很重要,决心比努力更重要...........
2010-07-28 21:21
huxiangwenhu
Rank: 4
等 级:业余侠客
威 望:1
帖 子:191
专家分:262
注 册:2010-6-1
得分:0 
谢谢大家了,彻底的懂了
2010-07-28 21:39
kelly_zsl
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-6-5
得分:0 
this 代表当前类的对象。
2010-08-24 14:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-314112-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.344806 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved