登入界面的创建与监听器
界面
1、创建一个界面所需要的组件
首先我们需要考虑一个界面的组件有哪些。
元素组件:输入(按钮、输入框)输出(显示文字、图片);这些元素组件提供了和用户的交互功能,让用户能输入账号,密码等。
但是为了将这些元素组件整合在一起,我们还需要一个组件来装纳其他组件,这个组件我们称为顶级容器组件,也就是界面。通过界面来使其他组件显示。
将这些组件整合在一起后,我们不可能让他们杂乱无章的在界面中因此我们还要设定这个界面的布局方式,让界面上的组件有序的排列在界面中。通常我们都是使用流式布局.(流式布局:将所有的组件从左到右依次摆放,一行摆放不下下一个组件,则自动切换一行。)
2、创建界面
在我们知道了如何创建一个界面后,我们可以开始编写一个界面。
我们首先需要调用编写界面所需要的两个包:
awt: java.awt包下,java早期使用的界面开发包,布局、监听器、尺寸等等仍然保留使用。
swing: javax.swing包下,组件类的类名以J开头。
然后我们需要知道各个界面组件的代码:
文本输入框 JTextField
密码输入框 JPasswordField
复选框 JCheckBox
登录按钮 JButton
显示文字的标签 JLabel
显示图片的标签 JLabel
顶级容器组件 JFrame
图片 javax.swing.ImageIcon
流式布局 java.awt.FlowLayout
尺寸 java.awt.Dimension
居中 loginFrame.setLocationRelativeTo(null)
我们开始编写代码
先创建窗体
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.FlowLayout;
import javax.swing.JTextField;
import java.awt.Dimension;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JPasswordField;
import javax.swing.JCheckBox;
public class LoginUI {
public void showUI() {
//创建一个窗体对象
JFrame loginFrame = new JFrame();
//设置窗体的属性:大小、关闭的默认操作
loginFrame.setSize(600, 450);
loginFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体的布局
FlowLayout layout = new FlowLayout();
loginFrame.setLayout(layout);
接着创建一个图片对象
//创建一个图片对象
ImageIcon icon = new ImageIcon("qqface_0_web.gif");
//创建一个显示图片的标签对象
JLabel iconLabel = new JLabel(icon);
//设置图片大小
Dimension iconSize = new Dimension(300,100);
iconLabel.setPreferredSize(iconSize);
//添加图片标签到窗体上
loginFrame.add(iconLabel);
注:ImageIcon(“qqface_0_web.gif”);该函数括号内的是图片的文件名和地址,如果直接将图片放入包中则只需要文件名。
创建密码框和输入框以及一些小的细节
//创建一个文本输入框对象
JTextField nameInput = new JTextField();
//设置输入框的大小
Dimension inputSize = new Dimension(300, 30);
nameInput.setPreferredSize(inputSize);
//添加输入框到窗体上
loginFrame.add(nameInput);
//创建一个显示文字的标签
JLabel registerLabel = new JLabel("注册账号");
//设置大小
Dimension labelSize = new Dimension(100,30);
registerLabel.setPreferredSize(labelSize);
//添加到窗体上
loginFrame.add(registerLabel);
//创建一个密码输入框对象
JPasswordField Input = new JPasswordField();
//设置输入框的大小
Dimension inputSize1 = new Dimension(300, 30);
Input.setPreferredSize(inputSize1);
//添加输入框到窗体上
loginFrame.add(Input);
//创建一个显示文字的标签
JLabel registerLabel1 = new JLabel("找回密码");
//设置大小
Dimension labelSize1 = new Dimension(100,30);
registerLabel1.setPreferredSize(labelSize1);
//添加到窗体上
loginFrame.add(registerLabel1);
创建登入按钮
//创建一个登入按钮
JButton Button=new JButton("登入");
//设置大小
Dimension ButtonSize = new Dimension(300,30);
Button.setPreferredSize(ButtonSize);
//添加到窗体上
loginFrame.add(Button);}
最后显示页面的主方法
//主方法
public static void main(String[] args) {
//创建界面类的对象
LoginUI ui = new LoginUI();
//显示界面
ui.showUI();
}
}
效果如下
但是如果只是这样的界面并无法实现检测登入成功或失败的结果。所以我们为使界面能够更加的满足平常的使用需求,我们需要对输入的账号和密码进行检测,判断是否登入成功。因此我们需要进行一定的判断,这就需要给按钮添加监听器。
监听器
1、监听器的原理
在生活中,我们大都知道监听器是如何工作的,而java中监听器工作是依靠事件监听机制来工作的。(事件监听机制):给事件源组件添加事件监听器,当事件源上发生相应类型的事件时,则自动的调用事件监听器中事件处理方法。
事件:用外部设备操作组件。可分为以下几类:
鼠标事件: 用鼠标操作组件(关注:鼠标操作的位置、类型)
键盘事件: 用键盘操作组件
动作事件: 用鼠标点击按钮(关注:是否点击、点击的是哪一个按钮)
事件源:事件发生的源组件。
事件监听器:每一种类型的事件都有一个对应类型的事件监听器,与事件对应也可分为几类:
鼠标事件监听器: MouseListener
键盘事件监听器: KeyListener
动作事件监听器: ActionListener
这些监听器实际上都是接口类型。
2、实现监听的过程
事件监听实现步骤
第一步:确定事件源
对于这个登入界面来说,登录按钮便是事件源,当按钮按下时检测账号密码的输入对错。
第二步:确定事件类型
因为是按钮被点击后进行检测,所以按钮被点击是动作事件
第三步:创建一个监听器类,实现对应的监听器接口
第四步:创建监听器的对象,给事件源添加监听器
我们先将登入按钮创建为监听对象,通过其被点击来进行判断。
//创建监听器对象
enter bt = new enter();
//给按钮添加监听器
Button.addActionListener(bt);
//给监听器的属性赋值
bt.nameInput = nameInput;
bt.Input = Input;
//设置窗体可见
loginFrame.setVisible(true);
对输入的账号密码进行判断并根据不同情况显示不同界面
import java.awt.event.ActionEvent; import
java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
public class enter implements ActionListener{
//接口的属性 密码和账号
JTextField nameInput;
JPasswordField Input;
public void actionPerformed(ActionEvent e) {
String number=nameInput.getText();
String password=Input.getText();
if(number.equals("1183636939")&&password.equals("123456789"))
{
JOptionPane.showConfirmDialog(null,"登入成功","登入成功",JOptionPane.YES_NO_OPTION);
} else{
JOptionPane.showMessageDialog(null, "登入失败","登入失败",JOptionPane.ERROR_MESSAGE);
System.out.println("登录失败!");
}
//输出
}
}
如此,我们就可以创建一个判断登入成功与否的界面了。