登录界面设计
组件
- awt–界面开发
界面的颜色、位置、流式布局器、动作监听器等元素
import java.awt.Color;//设置登录界面颜色
import java.awt.Dimension;//登录界面初始化位置
import java.awt.FlowLayout;
import java.awt.event.ActionListener;//事件的动作监听器
2.swing–可视化组件
import javax.swing.JFrame;//窗体组件类顶级容器
import javax.swing.ImageIcon;//图片组件
import javax.swing.JButton;//按钮组件
import javax.swing.JCheckBox;//复选框
import javax.swing.JLabel;//标签
import javax.swing.JPasswordField;//密码输入框
import javax.swing.JTextField;//文本输入框
界面设计
- 创建新的类,定义一个初始化界面函数initUI
public class LoginUI extends JFrame{
public static void main(String[] args) {
LoginUI loginui = new LoginUI();
loginui.initUI();
}
- 初始化界面,插入组件,加入动作监听器
public void initUI() {
JFrame lf = new JFrame();
lf.setTitle("欢迎登录");//设置标题
lf.setSize(390,400);// 顶级容器专用
lf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 关闭时退出程序
lf.setLocationRelativeTo(null); //设置窗体相对于另一组间的居中位置,参数null表示窗体相对于屏幕的中央位置
lf.setResizable(false);//不能调整窗体大小
FlowLayout fl = new FlowLayout();//创建流式布局类的对象
lf.setLayout(fl);
ImageIcon img = new ImageIcon("image/login.png"); //
JLabel imgJla = new JLabel(img);//创建一个新的包image,放入图片,插入图片
JLabel nameJla = new JLabel("账号:");//设置标签名
JLabel pwdJla = new JLabel("密码:");
JTextField nameField = new JTextField();
JPasswordField pwdField = new JPasswordField();
System.out.println("nameField=="+nameField);
JCheckBox remmeberCb = new JCheckBox
JButton loginbtn = new JButton("登录");//设置按钮名
JButton registbtn = new JButton("注册");
JLabel reJla = new JLabel("<html><body><a href='https://www.baidu.com'>忘记密码</a></body></html>");
Color color = new Color(255,255,255);
loginbtn.setBackground(color);
Dimension indim1 = new Dimension(320,30);//组件尺寸
nameField.setPreferredSize(indim1); // 组件专用
pwdField.setPreferredSize(indim1); // 组件专用
/**
* 将组件对象加载到容器
*/
lf.add(imgJla);
lf.add(nameJla);
lf.add(nameField);
lf.add(pwdJla);
lf.add(pwdField);
lf.add(loginbtn);
lf.add(registbtn);
lf.add(reJla);
lf.add(remmeberCb);
lf.setVisible(true);//窗体可见,所有组件代码要在这行代码之前
LoginListener loginListener = new LoginListener();
loginBtn.addActionListener(loginListener);
loginListener.nameField = namein;// 把账号输入框的内容传到文本中,从右往左传 loginListener.pwdField = pwdin;
实现界面效果如下
此时实现了一个简单的登录页面
动作监听器
插入动作监听器,实现点击按钮有反应
格式:public class 类名 implements 接口名{};
一个类实现接口,必须将接口中的方法写一次并且加上方法体。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class LoginListener implements ActionListener{
public JTextField nameField;//定义账号文本框组件
public JPasswordField pwdField;//定义密码文本框组件
// 按钮被点击时自动调用
public void actionPerformed(ActionEvent e) {
String btnstr = e.getActionCommand();//返回此事件命令的字符串
System.out.println(btnstr + " 按钮被点击了");
if (btnstr.equals("登录")) {
System.out.println("验证密码");
String namestr = nameField.getText();//获取账号文本
String pwdstr = pwdField.getText();//获取密码文本
System.out.println("账号:" + namestr);//输入账号文本
System.out.println("密码:" + pwdstr);//输出密码文本
}
//验证账号密码
if (namestr.equals("admin") && "admin123".equals(pwdstr)) {
System.out.println("密码验证成功!");
initUI("登录成功", "欢迎登录XX,您的账号是" + namestr + "您的密码是:" + pwdstr);
} else {
System.out.println("密码验证失败!请重试!!");
initUI("登录失败", "您的账号或密码不正确,请重试!!!");
pwdField.setText("");// 将密码输入框设置文本为空字符
}
}
}
设置消息提示框
public void initUI(String tilestr, String msg) {
JFrame jf = new JFrame(tilestr);
jf.setSize(350, 100);// 尺寸
jf.setLocationRelativeTo(null);// 位置,null为居中
jf.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);//关闭消息提示框仅隐藏,没有关闭全部
JLabel actionLabel = new JLabel(msg);
jf.add(actionLabel);
jf.setVisible(true);//可视化条件
实现界面效果如下图所示
若账号密码输入正确
账号或密码输入有误时,密码输入框内容被清空,提示重试。