我们在创建登陆界面时肯定要有登录按钮,当我们点击这个按钮时,便向电脑输入了命令,那么这个命令是如何产生的?? 这就要用到接口和监听器。
给事件源组件添加事件监听器,当事件源组件上发生相应类型的事件时,则自动的调用监听器中事件处理方法。 事件:用外部设备操作组件 鼠标事件:用鼠标操作组件(关注鼠标操作的位置、类型) 键盘事件:用键盘操作事件。 动作事件:用鼠标点击按钮(关注是否点击,点的是哪个按钮) 事件监听器 鼠标事件监听器:MouseListener
public interface MouseListener extends EventListener { /** * Invoked when the mouse button has been clicked (pressed * and released) on a component. */ public void mouseClicked(MouseEvent e); /** * Invoked when a mouse button has been pressed on a component. */ public void mousePressed(MouseEvent e); /** * Invoked when a mouse button has been released on a component. */ public void mouseReleased(MouseEvent e); /** * Invoked when the mouse enters a component. */ public void mouseEntered(MouseEvent e); /** * Invoked when the mouse exits a component. */ public void mouseExited(MouseEvent e); }键盘事件监听器:KeyListener
public interface KeyListener extends EventListener { /** * Invoked when a key has been typed. * See the class description for {@link KeyEvent} for a definition of * a key typed event. */ public void keyTyped(KeyEvent e); /** * Invoked when a key has been pressed. * See the class description for {@link KeyEvent} for a definition of * a key pressed event. */ public void keyPressed(KeyEvent e); /** * Invoked when a key has been released. * See the class description for {@link KeyEvent} for a definition of * a key released event. */ public void keyReleased(KeyEvent e); }动作事件监听器:ActionListener
public interface ActionListener extends EventListener { /** * Invoked when an action occurs. */ public void actionPerformed(ActionEvent e); }下面通过登陆界面中登录、注册按钮介绍接口、监听器使用方法 首先创建登陆界面窗体,往里面放好组件
package ui; import javax.swing.JFrame; import java.awt.Dimension; import java.awt.FlowLayout; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.JButton; import javax.swing.JCheckBox; public class login { public void showlogin(){ JFrame loginFrame=new JFrame(); loginFrame.setTitle("登录"); loginFrame.setSize(500, 550); FlowLayout layout=new FlowLayout(); loginFrame.setLayout(layout); ImageIcon icon=new ImageIcon("C:\\Users\\董润泽\\Desktop\\u=471759052,2414073488&fm=27&gp=0.jpg"); JLabel iconLabel=new JLabel(icon); loginFrame.add(iconLabel); JLabel accountLabel=new JLabel("账号"); loginFrame.add(accountLabel); JTextField nameInput=new JTextField(); Dimension inputSize=new Dimension(400,35); nameInput.setPreferredSize(inputSize); loginFrame.add(nameInput); JLabel blanklabel=new JLabel(" "); loginFrame.add(blanklabel); JLabel passwordLabel=new JLabel("密码"); loginFrame.add(passwordLabel); JTextField nameInput2=new JTextField(); Dimension inputSize2=new Dimension(400,35); nameInput2.setPreferredSize(inputSize2); loginFrame.add(nameInput2); JLabel blanklabel4=new JLabel(" "); loginFrame.add(blanklabel4); JCheckBox autologin=new JCheckBox("自动登录"); loginFrame.add(autologin); //设置自动登录复选框大小 Dimension checkSize = new Dimension(200, 30); autologin.setPreferredSize(checkSize); JCheckBox remcord=new JCheckBox("记住密码"); loginFrame.add(remcord); JButton loginButton=new JButton("登录"); loginFrame.add(loginButton); JButton registerButton=new JButton("注册"); loginFrame.add(registerButton); // 注意,在此处对登录和注册按钮加监听器 / loginFrame.setVisible(true); } public static void main(String[] args){ login ui=new login(); ui.showlogin(); } }使用监听器的目的:让用户点击登录按钮时实现相应的目的。 然后在相应的组件后面插入接口
//插入接口 LoginListener loginL = new LoginListener(); loginButton.addActionListener(loginL); registerButton.addActionListener(loginL); // 密码 loginL.input=nameInput2; //账号 loginL.input2=nameInput;接口的使用注意事项: 接口不能创建对象,需要接口的对象,则需要创建一个类,实现接口。 关键字: implements 格式: public class 类名 implements 接口名{ } 类实现接口必须重写接口的所有方法。
最后写入相应的方法体
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JTextField; public class LoginListener implements ActionListener{ //输入框对象 JTextField input; JTextField input2; String Admin = "123"; String secret = "123456"; //按钮点击自动执行 public void actionPerformed(ActionEvent e){ String action = e.getActionCommand(); //获取输入框内容 String name=input2.getText(); String password=input.getText(); if("注册".equals(action) ){ Admin=name; secret=password; System.out.println("注册成功"); } if("登录".equals(action)){ if(secret.equals(password) && Admin.equals(name)) { System.out.println("登陆成功"); } else{ System.out.println("登陆失败"); } } } }//个人感觉,本文写得特别乱,有些东西可能是错的,希望大牛帮忙评论指正,感激不尽。