让组件活起来,菜吉吉java总结——监听器
这一篇是对登陆界面的设计以及使用监听器的一个总结。
首先创建一个类似QQ的登陆界面。
/** * 主类 * @author 肖一喆 * */public class Test {public static void main(String args[]){/* * 新建一个Login类的对象frame * 并调用初始化界面unitLogin的方法 */Login frame = new Login();frame.unitLogin();}}import java.awt.FlowLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPasswordField;import javax.swing.JTextField;/** * 构建一个登录界面 * @author 肖一喆 * */public class Login extends JFrame{public void unitLogin(){/** * 初始化一个窗体的方法 */this.setSize(300,200);this.setTitle("QQ登录");this.setDefaultCloseOperation(3);FlowLayout layout = new FlowLayout();this.setLayout(layout);/* * 添加一些组件 */JLabel labnum = new JLabel("QQ号码");JTextField textnum = new JTextField(20);JLabel labpass = new JLabel("QQ密码");JPasswordField passw = new JPasswordField(20);JButton btnclear = new JButton("清空");JButton btnlog = new JButton("登录");//设置点击按钮时候的命令btnclear.setActionCommand("clear");btnlog.setActionCommand("login");this.add(labnum);this.add(textnum);this.add(labpass);this.add(passw);this.add(btnclear);this.add(btnlog);this.setVisible(true);//添加监听器Listener listen = new Listener(textnum,passw);btnclear.addActionListener(listen);btnlog.addActionListener(listen);}}import java.awt.event.ActionEvent;import javax.swing.JPasswordField;import javax.swing.JTextField;/** * 构建一个监听器,实现ActionListener接口 * @author xiao * */public class Listener implements java.awt.event.ActionListener {private JTextField text;private JPasswordField pass;public Listener(JTextField text,JPasswordField pass){this.text = text;this.pass = pass;}public void actionPerformed(ActionEvent e){//得到点击按钮后获得的命令来判断点击的是哪个按钮String command = e.getActionCommand();if(command.equals("login")){String textnum = text.getText();String passw = pass.getText();System.out.println("帐号:"+textnum);System.out.println("密码:"+passw);if(textnum.equals("673127570")&&passw.equals("12345"))System.out.println("登陆成功!");elseSystem.out.println("帐号或密码错误");}else if(command.equals("clear")){text.setText("");pass.setText("");}}}?
?
这样一个简单的qq登录界面就完成了!
需要注意的地方在Listener那个接口里面重写了他的构造方法,并且在这个类里定义了两个private的变量,我们重载的那个构造方法有两个参数,分别把从TextField里和PasswordField里得到的字符传给那两个变量,来达到把那边输入框中输入的字符传到过来。可以说这种用法相当于c语言中的指针。在通过getText()便可以获得输入框中的字符。来进行帐号密码的比较判定。
?
通过自己写这些代码,希望可以更加熟练的使用监听器这功能。也知道使用的时候要注意很多。比如继承接口的时候要把接口下的方法补全,如果有多个按钮就要获取点击按钮的指令,并通过getActionCommand()获取命令来判断点击的是哪一个按钮来执行接下来的操作。还有就是要弄清每个方法的名字注意期中的大小写。我在写这一段代码的时候用Listener实现了ActionListener这个方法下,补全其中的actionPerformed这个方法的时候我把actionPerformed这个方法名中的P给弄成小写的p了。报错,但怎么我也没发现是哪里不对。最后使用软件自动更正发现又给重新定义了一边actionPerformed这个方法,我才发现是自己大小写弄错了。所以以后在做会很注意这些细节。还有包括{};这些符号要用英文的符号等等。……~
?
?