java新手上路(四):接口,事件监听

首先,接口的定义。举个例子,是人都要吃饭。但是你可以用筷子吃,也可以用叉子吃。人作为父类,吃饭是它的方法。在这里我们没法定义这个方法的方法体(也就是在定义“人” 的时候只能定义一个方法名“吃饭”,但是在这个方法的方法体是空的)。

接下来我们定义中国人和美国人的时候,就需要重写这个方法:中国人用筷子吃饭,美国人用叉子吃饭。

对于以上例子的分析,我们可以发现,三个类:“人”,“中国人”,“美国人”。其中“人”这个类是对其余两个类的进一步抽象。我们把对类的抽象叫做接口。

接口,关键词interface:
接口的属性必须是一个公共的静态常量:public static final,
接口的方法必须是一个公共的抽象方法:public abstract;

需要注意,我们在子类中对接口实现的时候,必须将接口中的全部方法实现。

事件监听:在写好一个界面后,我们都需要对这个界面进行很多的操作,如鼠标点击,输入文本等。我们将这些操作称为事件。而获得这个事件就需要用到监听机制。

每一个操作都是一个事件,而每一个事件都有相对应的监听机制。他们被定义在java.awt.event中;
而所有监听机制在java中都是接口类,我们在用到这些监听机制的时候,需要先用一个类来实现接口,然后才能使用接口中的方法。

下面我们编写一个需要用到事件和监听机制有关的程序:

用户输入账号和密码后点击登录按钮,要对输入的账号和密码进行验证,如果正确则显示画图程序窗体,如果错误显示错误提示界面。

分析这个问题涉及到两个窗体界面:登录界面和画图界面;
其中登陆界面应该包含三个按钮:帐号,密码,登录。两个输入框分别对应帐号和密码。
在得到画图界面的时候,我们需要监听“登录按钮被点击”这个事件,同时获得账号和密码输入框中的文本。

由此我们开始分别定义first类和事件监听firstlistener类

public class first {
    //主函数
    public static void main(String[] args){
        first f = new first();
        f.initUI();
    }

    public void initUI(){

            //实例化窗口界面。。。
        javax.swing.JFrame frame = new javax.swing.JFrame();
        frame.setTitle("画图板登陆界面");
        frame.setSize(200,300);
        frame.setLocation(500,200);
        frame.setDefaultCloseOperation(3);

            //  流式布局
        java.awt.FlowLayout fl = new java.awt.FlowLayout();
        frame.setLayout(fl);

            //帐号
        javax.swing.JLabel labelName = new javax.swing.JLabel("账号:"); 
        frame.add(labelName);

        javax.swing.JTextField textName1 = new javax.swing.JTextField(10);
        frame.add(textName1);

            //密码
        javax.swing.JLabel labelPassword = new javax.swing.JLabel("密码:"); 
        frame.add(labelPassword);
        javax.swing.JPasswordField textName2 = new javax.swing.JPasswordField(10);
        frame.add(textName2);

            //登录
        javax.swing.JButton denglu = new javax.swing.JButton("登录");
        frame.add(denglu);

            //注册
        javax.swing.JButton zhuce = new javax.swing.JButton("注册");
        frame.add(zhuce);       
        frame.setVisible(true);

        //在用到事件监听的时候需要实例化一个firstlistener的对象
        firstlistener fls1 = new firstlistener();

        //需要注意的是我们在firstlistener中需要用到frame和两个输入框中的内容,所以在firstlistener需要做一个值传递的工作。
        fls1.setpassword(textName2);
        fls1.setfirst(frame);
        fls1.settext(textName1);
        denglu.addActionListener(fls1);
    }
}

下面写监听机制firstlistener类:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class firstlistener implements ActionListener {

//对first中frame对象的传递
    private JFrame f;
    public void setfirst(JFrame j) {
        f = j;
    }

//对first中textName1对象的传递
    private JTextField t;
    public void settext(JTextField t1){
        t = t1;
    }

//对first中textName2对象的传递
    private JPasswordField p;
    public void setpassword(JPasswordField p1){
        p = p1;
    }

//定义监听函数actionPerformed
    public void actionPerformed(ActionEvent e) {

//若帐号为admin,密码为123.则跳转到画图板界面
if(t.getText().equals("admin")&&p.getText().equals("123")){
                javax.swing.JFrame frame1 = new javax.swing.JFrame();
                frame1.setTitle("画图板界面");
                frame1.setSize(200, 300);
                frame1.setDefaultCloseOperation(3);
                frame1.setLocation(20, 30);
                frame1.setVisible(true);

//关闭frame界面即登录界面
                f.dispose();
            }       
    }

}

接口和事件监听的相关知识学习完成。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值