您的位置:首页 > 编程语言 > Java开发

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

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

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


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

接口,关键词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();
}
}

}


接口和事件监听的相关知识学习完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java