我们在创建登陆界面时肯定要有登录按钮,当我们点击这个按钮时,便向电脑输入了命令,那么这个命令是如何产生的??
这就要用到接口和监听器。
事件监听机制:
给事件源组件添加事件监听器,当事件源组件上发生相应类型的事件时,则自动的调用监听器中事件处理方法。
事件:用外部设备操作组件
鼠标事件:用鼠标操作组件(关注鼠标操作的位置、类型)
键盘事件:用键盘操作事件。
动作事件:用鼠标点击按钮(关注是否点击,点的是哪个按钮)
事件监听器
鼠标事件监听器: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("登陆失败");
}
}
}
}
//个人感觉,本文写得特别乱,有些东西可能是错的,希望大牛帮忙评论指正,感激不尽。