简介
- 事件(Event):鼠标,键盘,布局改变等等操作
- 事件监听器(Event Listener):对这些事件做出相应的程序
事件中包含事件的信息
- 事件源(getSource),得到的是Object,可以强制转换成相应的类型
if (e.getSource() == registerButton1)//如果点到了registerButton1按钮
- 事件具体情况,如MouseEvent的getX(),getY()得到鼠标的坐标,keyEvent的getKeychar()得到当前字符等等。
public void mouseMoved(MouseEvent e) { int x = e.getX(); int y = e.getY(); String s = "当前鼠标坐标:(" + x + ", " + y + ")"; MouseMove.lab.setText(s);}
事件适配器
事件适配器类(Adapter)——简化实现Listener
常见的事件适配器
适配器名称 | 用途 |
---|---|
ComponentAdapter | 组件适配器 |
ContainerAdapter | 容器适配器 |
FocusAdapter | 焦点适配器 |
KeyAdapter | 键盘适配器 |
MouseAdapter | 鼠标适配器 |
MouseMotionAdapter | 鼠标运动适配器 |
WindowAdapter | 窗口适配器 |
代码示例
- 鼠标适配器
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Objects;
class FunctionRegister extends JFrame implements ActionListener {//这是点击注册按钮后需要跳转到的注册界面
JPanel panel1;
JLabel label1,label2, label3, label4,label5;
JButton registerButton1, exitButton1;
JTextField label2Field, label5Field;
JPasswordField passwordField3, passwordField4;
public FunctionRegister() {
this.setTitle("天地银行注册系统");
this.setSize(400, 300);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel1 = new JPanel();
label1 = new JLabel("欢迎您注册天地银行");
label2 = new JLabel("请输入您的用户名");
label2Field = new JTextField(16);
label3 = new JLabel("请输入您的密码");
passwordField3 = new JPasswordField(16);
label4 = new JLabel("请再次确认您的密码");
passwordField4 = new JPasswordField(16);
label5 = new JLabel("请输入您的身份证号");
label5Field = new JTextField(18);
registerButton1 = new JButton("注册");
registerButton1.addActionListener(this);
exitButton1 = new JButton("返回");
exitButton1.addActionListener(this);
panel1.add(label1);
panel1.add(label2);
panel1.add(label2Field);
panel1.add(label3);
panel1.add(passwordField3);
panel1.add(label4);
panel1.add(passwordField4);
panel1.add(label5);
panel1.add(label5Field);
panel1.add(registerButton1);
panel1.add(exitButton1);
this.add(panel1);
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == registerButton1) {
if (passwordField3.getText().length() != 6) {
JOptionPane.showMessageDialog(null, "请输入六位数作为密码");
} else if (!Objects.equals(passwordField3.getText(), passwordField4.getText())) {
JOptionPane.showMessageDialog(null, "两次密码前后不一致");
} else if (label5Field.getText().length() != 18) {
JOptionPane.showMessageDialog(null, "身份证号应该为18位");
} else {
JOptionPane.showMessageDialog(null,"注册成功");
}
}
}
public static void main(String []args ){
new FunctionRegister();
}
}
- 键盘适配器
import java.awt.*;
import java.awt.event.*;
class Test {
private Frame mainFrame;
private Label headerLabel;
private Label statusLabel;
private Panel controlPanel;
public Test(){
prepareGUI();
}
public static void main(String[] args){
Test awtAdapterDemo = new Test ();
awtAdapterDemo.showKeyAdapterDemo();
}
private void prepareGUI(){
mainFrame = new Frame("Java AWT Examples");
mainFrame.setSize(400,400);
mainFrame.setLayout(new GridLayout(3, 1));
mainFrame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent windowEvent){
System.exit(0);
}
});
headerLabel = new Label();
headerLabel.setAlignment(Label.CENTER);
statusLabel = new Label();
statusLabel.setAlignment(Label.CENTER);
statusLabel.setSize(350,100);
controlPanel = new Panel();
controlPanel.setLayout(new FlowLayout());
mainFrame.add(headerLabel);
mainFrame.add(controlPanel);
mainFrame.add(statusLabel);
mainFrame.setVisible(true);
}
private void showKeyAdapterDemo(){
headerLabel.setText("Listener in action: KeyAdapter");
final TextField textField = new TextField(10);
textField.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
statusLabel.setText("Entered text: " + textField.getText());
}
}
});
Button okButton = new Button("OK");
okButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
statusLabel.setText("Entered text: " + textField.getText());
}
});
controlPanel.add(textField);
controlPanel.add(okButton);
mainFrame.setVisible(true);
}
}