-
界面的组成:
- 可视化部分: 窗体 按钮 输入框 ..
- 元素规则部分:尺寸 颜色 字体 布局...
- 内容部分:文本 图片
-
界面开发包:
- java.awt 早期的界面开发包 保留使用元素规则类
- javax.swing 升级的界面开发包 都可以使用主要是可视化部分
-
登录注册界面:
- javax.swing:
- JFrame : 窗体类
- JButton : 按钮类
- JLabel : 标签类 只会显示其中的内容 不具备其他功能
- JTextField : 输入框类
- JPasswordField : 密码输入框类
- ImageIcon : 图片类
- java.awt:
- FlowLayout : 流式布局类 按照添加组件的顺序 从左到右 从上到下 依次排列 整体居 中 会根据组件的内容来自适应尺寸
- Dimension : 尺寸类 用于设置组件的尺寸
- javax.swing:
-
开发步骤:
- 创建一个类,在其中创建一个方法,并在类中创建一个主函数,创建本类对象调用方法。
- 在方法中:
- a. 创建一个窗体对象,设置窗体对象的标题、尺寸、关闭方式、可视化、布局等属性。
- b. 创建窗体内的组件对象,如按钮、输入框、标签等。
- c. 设置组件对象的内容以及其他必要元素。
- d. 按照布局规则添加组件。
-
代码实例:
import javax.swing.*;
import java.awt.*;
public class LoginUI{
public void showUI(){
JFrame jf = new JFrame ();
jf.setTitle("登录界面");
jf.setSize (400,500);
jf.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);// 点击关闭按钮时退出程序
jf.setLayout (new FlowLayout ());
jf.setLocationRelativeTo (null);// 设置窗体居中
// jf.setLocation (300,300);// 设置窗体位置
JLabel imageJla = new JLabel ();
JLabel nameJla = new JLabel ();
JLabel pwdJla = new JLabel ();
JTextField nameJtf = new JTextField ();
JPasswordField pwdJpf = new JPasswordField ();
JButton btn = new JButton ();
nameJla.setText ("账号:");
pwdJla.setText ("密码:");
btn.setText ("登录");
ImageIcon icon = new ImageIcon ("C:\\Users\\ZLYLF\\Desktop\\login.png");
imageJla.setIcon (icon);
Dimension dim = new Dimension (310,35);
nameJtf.setPreferredSize (dim);// 设置首选尺寸
pwdJpf.setPreferredSize (dim);
jf.add (imageJla);
jf.add (nameJla);
jf.add (nameJtf);
jf.add (pwdJla);
jf.add (pwdJpf);
jf.add (btn);
jf.setVisible (true);// 可视化 如果窗体有组件 要放在组件添加之后
}
public static void main(String[] args){
LoginUI loginUI = new LoginUI();
loginUI.showUI();
}
}
-
监听交互: 接口
-
动作监听器(ActionListener)是Java中用于侦听组件动作事件的接口。当用户与组件进行交互,比如点击按钮、选择菜单项等,就会触发相应的动作事件。
要使用动作监听器,可以按照以下步骤进行操作:
- 创建一个类来实现 ActionListener 接口:
-
public class MyActionListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // 在这里编写响应动作事件的代码 } }
-
在该类中重写接口方法 actionPerformed(ActionEvent e),在方法中编写响应动作事件的代码。
-
将该类的对象绑定到相应的组件上,如按钮或菜单项:
MyActionListener listener = new MyActionListener(); button.addActionListener(listener); menuItem.addActionListener(listener);
-
在上述例子中,创建了一个名为 MyActionListener
的类,并将其对象 listener
绑定到按钮和菜单项上。当用户点击按钮或选择菜单项时,系统会触发 actionPerformed
方法,并执行其中的代码。
需要注意的是,每个组件只能绑定一个动作监听器,但一个动作监听器可以监听多个组件。因此,您可以创建多个不同的动作监听器,分别绑定到不同的组件上,以实现不同的响应逻辑。
-
代码示例:
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
// 登录监听器类,实现 ActionListener 接口
public class LoginListener implements ActionListener {
JTextField nameJtf; // 用户名输入框
JPasswordField pwdJpf; // 密码输入框
// 初始化输入框
public void initInput(JTextField nameJtf, JPasswordField pwdJpf) {
this.nameJtf = nameJtf;
this.pwdJpf = pwdJpf;
}
User[] userList = new User[10]; // 存储用户的数组
int index = 0; // 记录当前用户数量
// 按钮点击事件响应方法
public void actionPerformed(ActionEvent e) {
System.out.print("按钮被点击了");
String ac = e.getActionCommand();
System.out.println(" 点击的是:" + ac);
// 获取输入框的内容
String name = nameJtf.getText();
String pwd = pwdJpf.getText();
System.out.println("账号:" + name + " 密码:" + pwd);
if (ac.equals("登录")) {
// 遍历用户列表,查找用户
for (int i = 0; i < userList.length; i++) {
User user = userList[i];
if (user != null) {
if (user.userName.equals(name)) {
System.out.println("找到了用户");
boolean logincode = user.login(pwd);
if (logincode) {
JOptionPane.showMessageDialog(null, "登录成功");
// 跳转界面
return;
} else {
JOptionPane.showMessageDialog(null, "登录失败");
return;
}
}
}
}
System.out.println("没有找到用户" + name);
int opcode = JOptionPane.showConfirmDialog(null, "没有找到用户" + name +
",是否注册", "提示",
JOptionPane.YES_NO_OPTION);
if (opcode == 0) {
regist(name, pwd); // 注册新用户
}
} else if (ac.equals("注册")) {
regist(name, pwd); // 注册新用户
}
}
// 注册新用户方法
public void regist(String name, String pwd) {
for (int i = 0; i < userList.length; i++) {
User user = userList[i];
if (user != null) {
if (user.userName.equals(name)) {
System.out.println("找到了用户");
JOptionPane.showMessageDialog(null, "用户已存在");
}
}
}
System.out.println("用户名可以使用");
User user = new User();
user.userName = name;
user.userPwd = pwd;
userList[index] = user;
index++;
JOptionPane.showConfirmDialog(null, "注册成功", "提示",
JOptionPane.YES_NO_OPTION);
}
}
// 用户类
class User {
String userName; // 用户名
String userPwd; // 密码
boolean isLogin; // 登录状态
// 检查密码是否正确
public boolean checkPassword(String pwdIn) {
return pwdIn.equals(userPwd);
}
// 用户登录方法
public boolean login(String pwdIn) {
if (checkPassword(pwdIn)) {
if (isLogin) {
System.out.println(userName + "已经登录了");
return false;
}
System.out.println("登录成功");
isLogin = true;
return true;
} else {
System.out.println("密码错误,登录失败");
return false;
}
}
}