今天第一次在蓝杰学习,飞哥给我们讲了一些关于界面,事件监听和接口的一些知识。学完之后给我们布置了一个作业,就是编写一个登陆界面验证用户名和密码。
**
要用到的类:JFrame(窗体)、FlowLayout(流布局方式)、ImageIcon(图像图标)、JTextField(文本输入框)、JPasswordField(密码输入框)、JLabel(标签)、按钮(JButton)、Dimension(用来设置组件的高度与宽度)
**
1、思路 大概的思路就是:先创建一个JFrame窗体,设置它的一些属性(比如大小,名称,位置等);然后创建一些组件并设置它们的一些属性,这里要用到标签,文本输入框,密码框,按钮等;最后就是给按钮添加事件监听器。
我最后还加了一个小改进,就是如果登陆成功了,就会弹出一个对话框提示登陆成功,然后原来的登录界面和对话框就会消失。
难点:事件监听 事件监听就是给事件源添加事件监听器,当事件源上发生相应类型的事件时,就会自动调用监听器中的事件处理方法。
这里出现了三个关键词:事件、事件源、事件监听器,那我就说一说这三个词的意思:
事件:就是用外部设备(鼠标,键盘,动作等)操作组件。这是一个动词,一个动作。
鼠标事件:用鼠标操作组件(比如鼠标的位置,拖拽之类的;还有操作类型)
键盘事件:用键盘操作组件
动作事件:用鼠标点击按钮(是否点击、点击的是哪一个按钮)
这里大家可能会想:鼠标事件不就是包含了动作事件吗?其实它们是不同的,动作事件关注的只是鼠标是否点击了某个组件,点击的是哪个组件,而不会关注点击的是组件的那个位置。
事件源:就是当前事件发生的组件。
事件监听器:每一种类型的事件都有一个相对应类型的事件监听器:
鼠标事件对应鼠标监听器:MouseListener
键盘事件对应键盘监听器:KeyListener
动作事件对应动作监听器:ActionListener
现在来说一下事件监听的实现步骤:
(1)确定事件源,比如说登录按钮。
(2)确定事件的类型,比如是动作事件。
(3)创建一个类,这个类要实现相对应类型事件监听器的接口(这个事件监听器就是一个接口)
(4)重写接口的方法,就是给事件源添加监听器。
废话不多说,直接上代码:
2、登陆界面
import java.awt.Dimension;import java.awt.FlowLayout;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPasswordField;import javax.swing.JTextField;//界面类public class LoginUI {//显示界面的方法public void showUI() {//创建一个窗体对象JFrame loginFrame = new JFrame();//设置窗体的属性大小、loginFrame.setSize(600, 650);loginFrame.setLocationRelativeTo(null);//位置居中loginFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点击关闭按钮退出程序//设置窗体的布局方式FlowLayout layout = new FlowLayout();//流布局loginFrame.setLayout(layout);//设置布局方式//创建图片对象ImageIcon icon = new ImageIcon("C:\\Users\\Admin\\Pictures\\PENG男神\\22d9574b26604e93ac7573b34e4dd98b_th.png");//创建一个图片标签对象JLabel iconLabel = new JLabel(icon);Dimension iconSize = new Dimension(500, 500);iconLabel.setPreferredSize(iconSize);//添加图片标签对象到窗体上loginFrame.add(iconLabel);//创建一个输入框对象JTextField nameInput = new JTextField();//设置输入框的大小Dimension inputSize = new Dimension(400, 30);nameInput.setPreferredSize(inputSize);//添加输入框到窗体上loginFrame.add(nameInput);//创建一个显示文字的标签JLabel registerLabel = new JLabel("登录账号");//添加标签到窗体上loginFrame.add(registerLabel);//创建一个密码框JPasswordField passname = new JPasswordField();Dimension inputSizepass = new Dimension(400, 30);passname.setPreferredSize(inputSizepass);loginFrame.add(passname);JLabel passLabel = new JLabel("登录密码");loginFrame.add(passLabel);//按钮JButton btn = new JButton("登陆");//添加按钮loginFrame.add(btn);//创建监听器对象LoginListener loginL = new LoginListener();//给按钮添加监听器btn.addActionListener(loginL);//给监听器的输入框属性赋值loginL.input = nameInput;loginL.pass = passname;loginL.jf = loginFrame;//设置窗体可见loginFrame.setVisible(true);}public static void main(String[] args) {//创建界面的对象LoginUI ui = new LoginUI();//显示界面ui.showUI();}}
3、事件监听类
import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPasswordField;import javax.swing.JTextField;public class LoginListener implements ActionListener{//定义一个输入框JTextField input;//定义一个密码框JPasswordField pass;//定义一个窗口JFrame jf;//按钮点击的时候执行public void actionPerformed(ActionEvent e) {System.out.println("====");//获取输入框的内容String name = input.getText();//获取密码框的内容String passname = pass.getText();//判断if(name.equals("鱼雁") && passname.equals("123456")) {System.out.println("登陆成功");JOptionPane.showMessageDialog(null, "登录成功!");//如果登陆成功,就会弹出一个对话框,显示“登陆成功!”jf.setVisible(false);//登陆成功后原来的登录界面消失}else {System.out.println("登陆失败");}}}
如果觉得《蓝杰学习01--登陆界面验证用户名和密码》对你有帮助,请点赞、收藏,并留下你的观点哦!