简介:
在上篇创建简单的窗体口点击按钮并未反应,因为按钮的作者并未知道开发者使用按钮创建对象用于干什么,但他知道了你是否点击了按钮。因此设计了一套底层运行的调用逻辑,点击按钮时会调到一个接口中的方法。但这个方法没有具体的内容,为抽象方法。因此需要开发者自己编写。
动作监听器接口:ActionListener 在java.awt.event中
步骤:
1.创建一个新的类 LoginAction
2.实现动作监听器接口:
public class LoginAction implements ActionListener{ }
注:在类文件后添加了implements ActionListener
3.实现接口的类中,必须重写接口的抽象方法
public void actionPerformed(ActionEvent e){ }
4.给方法中添加点击按钮之后需要执行的文件的代码
5.在按钮的类中给这个类创建一个对象,使用按钮的addActionListener方法添加注册这个对象。
点击按钮后获取输入款的文本:
1.输入框获取文本:输入框对象变量名.getText();
2.界面上的输入框对象传一份给监听器中。
在监听器中创建一个JTextField的对象。
在界面输入框的类中进行调用传送。
同时监听多个按钮:
ActionEvent:动作事件
1.每次点击按钮都会传入一个当前时间的对象
2.事件对象中包含了事件的相关数据 比如按钮的文本
public void actionPerformed(ActionEvent e) {}
因此可以利用按钮上的文本进行区分。
String ac = e.getActionCommand();
练习:
package lcr0329;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
public class LoginUI {
public void showUI(){
//窗体设置
JFrame jf = new JFrame();
jf.setTitle("QQ登录界面");
jf.setSize(230,400);
jf.setDefaultCloseOperation(2);
FlowLayout fl = new FlowLayout();
jf.setLayout(fl);
//标签
JLabel jl1 = new JLabel("账号:");
JLabel jl2 = new JLabel("密码:");
//输入框
JTextField jtf1 = new JTextField();
JPasswordField jtf2 = new JPasswordField();
Dimension dim = new Dimension();//Dimension dim = new Dimension();
dim.setSize(150,25);//dim.setSise(150,25);
jtf1.setPreferredSize(dim);//
jtf2.setPreferredSize(dim);
//图片
String path = "C:\\Users\\15697\\IdeaProjects\\Pro24\\src\\lcr0328\\11.jpg";
ImageIcon icon = new ImageIcon(path);
JLabel iconjla = new JLabel();
iconjla.setIcon(icon);
//按钮
JButton jb = new JButton("登录");
JButton jb1 = new JButton("注册") ;
//按钮监听器
LoginAction la = new LoginAction();
la.nameJtf = jtf1;
la.pwdJtf = jtf2;
jb.addActionListener(la);
jb1.addActionListener(la);
//
jf.add(iconjla);
jf.add(jl1);
jf.add(jtf1);
jf.add(jl2);
jf.add(jtf2);
jf.add(jb);
jf.add(jb1);
jf.setVisible(true);
}
public static void main(String[] args) {
LoginUI lo = new LoginUI();
lo.showUI();
}
}
package lcr0329;
import javax.swing.*;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class LoginAction implements ActionListener {
JTextField nameJtf;
JPasswordField pwdJtf;
String name1;
String pwd1;
@Override
public void actionPerformed(ActionEvent e) {
String name = nameJtf.getText();
String pwd = pwdJtf.getText();
String ea = e.getActionCommand();;
if (ea.equals("注册")) {
name1 = name;
pwd1 = pwd;
}else if(ea.equals("登录")){
if (name.equals(name1)) {
System.out.print("账号正确 ");
if (pwd.equals(pwd1)) {
System.out.println("密码正确");
//UInext ui = new UInext();
//ui.showNext();
} else {
System.out.println("密码错误");
pwdJtf.setText("");
}
} else {
System.out.println("账号错误");
nameJtf.setText("");
pwdJtf.setText("");
}
}else{
System.out.println("错误");
}
}
}