Java实现简单的GUI登录和注册界面

先看效果图:

登陆界面:
在这里插入图片描述
注册界面:
在这里插入图片描述

实现代码如下:
一、登陆界面:
package cn.bms.view;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.MatteBorder;

import cn.bms.tools.GUITools;

/*
 * 登录窗口
 */
@SuppressWarnings("serial")
public class AdminLogin extends JFrame {
	private JPanel contentPanel = new JPanel();
	// Label标签存放背景图片
	private JLabel label;
	// 设置按钮组件
	private JButton login = new JButton("登录"), register = new JButton("注册");

	private JLabel jlb1 = new JLabel("用户名:"), jlb2 = new JLabel("密码:"), jlbtitle = new JLabel("登录界面");
	// 设置文本框组件
	private JTextField admin = new JTextField(), password = new JTextField();

	public AdminLogin() {
		this.init();
		this.addListener();
	}

	private void init() {
		this.setTitle("管理员登陆界面");
		this.setSize(500, 350);
		GUITools.center(this);
		ImageIcon image1 = new ImageIcon("837878.jpg"); // 界面背景图片
		JLabel backLabel = new JLabel();
		backLabel.setIcon(image1);
		label = new JLabel(image1);
		label.setBounds(0, 0, 1000, 400);
		// 在LayeredPane最底层上添加两个带图片的标签,并且label2在label上方
		this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
		// 将内容面板设置为透明,就能够看见添加在LayeredPane上的背景。
		((JPanel) this.getContentPane()).setOpaque(false);

		/*
		 * 添加组件到contentPanel容器中 布局方式为自由布局。
		 */
		contentPanel.setLayout(null);
		add(admin);
		add(password);
		add(login);
		add(register);
		add(jlb1);
		add(jlb2);
		add(jlbtitle);

		/*
		 * 组件绝对位置
		 */
		jlb1.setBounds(50, 130, 90, 25);
		jlb1.setForeground(Color.WHITE);
		admin.setBounds(95, 130, 300, 25);
		password.setBounds(95, 154, 300, 25);
		jlb2.setBounds(50, 154, 90, 25);
		jlb2.setForeground(Color.WHITE);
		register.setBounds(95, 225, 90, 20);
		login.setBounds(315, 225, 90, 20);
		jlbtitle.setBounds(180, 45, 200, 50);
		Font f = new Font("微软雅黑", Font.BOLD, 30);
		jlbtitle.setFont(f);
		jlbtitle.setForeground(Color.BLUE);

		/*
		 * 组件透明化
		 */
		admin.setOpaque(true);
		password.setOpaque(true);
		contentPanel.setOpaque(false);
		getContentPane().add(contentPanel);

		/*
		 * 组件边框颜色
		 */
		textSet(admin);
		textSet(password);
	}

	/*
	 * JTextField文本框设置方法.
	 */
	private void textSet(JTextField field) {
		field.setBackground(new Color(255, 255, 255));
		field.setPreferredSize(new Dimension(150, 28));
		MatteBorder border = new MatteBorder(0, 0, 2, 0, new Color(192, 192, 192));
		field.setBorder(border);
	}

	/*
	 * 事件监听
	 */
	private void addListener() {
		login.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				forLogin(admin.getText(), password.getText());
			}

		});
		register.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				forRegister();
			}

		});
	}

	// 登录方法
	public void forLogin(String admin, String pwd) {
	}

	// 注册方法
	public void forRegister() {
	}
}

二、注册界面:
package cn.bms.view;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.MatteBorder;

import cn.bms.controller.AdminLoginController;
import cn.bms.tools.GUITools;

/*
 * 注册窗口
 */
@SuppressWarnings("serial")
public class AdminRegister extends JFrame {
	private JPanel contentPanel = new JPanel();
	// Label标签存放背景图片
	private JLabel label;
	// 设置按钮组件
	private JButton ok = new JButton("确定注册"), back = new JButton("返回登录");

	private JLabel jlb1 = new JLabel("用户名:"), jlb2 = new JLabel("密码:"), jlb3 = new JLabel("确认密码:"),
			jlbtitle = new JLabel("注册界面");
	// 设置文本框组件
	private JTextField admin = new JTextField(), password1 = new JTextField(), password2 = new JTextField();

	public AdminRegister() {
		this.init();
		this.addListener();
	}

	private void init() {
		this.setTitle("管理员注册界面");
		this.setSize(500, 350);
		GUITools.center(this);
		ImageIcon image1 = new ImageIcon("837878.jpg"); // 界面背景图片
		JLabel backLabel = new JLabel();
		backLabel.setIcon(image1);
		label = new JLabel(image1);
		label.setBounds(0, 0, 1000, 400);
		// 在LayeredPane最底层上添加两个带图片的标签,并且label2在label上方
		this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
		// 将内容面板设置为透明,就能够看见添加在LayeredPane上的背景。
		((JPanel) this.getContentPane()).setOpaque(false);

		/*
		 * 添加组件到contentPanel容器中 布局方式为自由布局。
		 */
		contentPanel.setLayout(null);
		add(admin);
		add(password1);
		add(password2);
		add(ok);
		add(back);
		add(jlb1);
		add(jlb2);
		add(jlb3);
		add(jlbtitle);

		/*
		 * 组件绝对位置
		 */
		jlb1.setBounds(40, 130, 90, 25);
		jlb1.setForeground(Color.WHITE);
		admin.setBounds(95, 130, 300, 25);

		password1.setBounds(95, 154, 300, 25);
		jlb2.setBounds(40, 154, 90, 25);
		jlb2.setForeground(Color.WHITE);

		password2.setBounds(95, 178, 300, 25);
		jlb3.setBounds(40, 178, 90, 25);
		jlb3.setForeground(Color.WHITE);

		ok.setBounds(315, 225, 90, 20);
		back.setBounds(95, 225, 90, 20);

		jlbtitle.setBounds(180, 45, 200, 50);
		Font f = new Font("微软雅黑", Font.BOLD, 30);
		jlbtitle.setFont(f);
		jlbtitle.setForeground(Color.BLUE);

		/*
		 * 组件透明化
		 */
		admin.setOpaque(true);
		password1.setOpaque(true);
		password2.setOpaque(true);
		contentPanel.setOpaque(false);
		getContentPane().add(contentPanel);

		/*
		 * 组件边框颜色
		 */
		textSet(admin);
		textSet(password1);
		textSet(password2);
	}

	/*
	 * JTextField文本框设置方法.
	 */
	private void textSet(JTextField field) {
		field.setBackground(new Color(255, 255, 255));
		field.setPreferredSize(new Dimension(150, 28));
		MatteBorder border = new MatteBorder(0, 0, 2, 0, new Color(192, 192, 192));
		field.setBorder(border);
	}

	/*
	 * 事件监听
	 */
	private void addListener() {
		ok.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				setRegister(admin.getText(), password1.getText(), password2.getText());
			}
		});
		back.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				new AdminLoginController().setVisible(true);
			}
		});
	}

	// 实现注册账户方法
	public void setRegister(String admin, String pwd1, String pwd2) {
	}
}

  • 23
    点赞
  • 292
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
好的,我可以为您提供一些简单的步骤来实现一个 Java Swing MySQL GUI 登录注册页面。 首先,您需要创建一个 MySQL 数据库,包括一个用户表,其中包含用户名密码字段。接下来,您需要创建一个 Java Swing 界面,包括登录注册选项卡。 对于登录选项卡,您需要创建一个包含用户名密码输入字段的表单,并在提交按钮上添加一个 ActionListener,该 ActionListener 将检查输入的用户名密码是否匹配数据库中的值。 对于注册选项卡,您需要创建一个包含用户名密码输入字段的表单,并在提交按钮上添加一个 ActionListener,该 ActionListener 将检查输入的用户名是否已经存在于数据库中。如果不存在,则将该用户名密码添加到用户表中。 以下是一个简单的示例代码,它可以帮助您开始创建 Java Swing MySQL GUI 登录注册页面: ```java import java.sql.*; import javax.swing.*; public class LoginGUI extends JFrame { private JTextField tfUsername; private JPasswordField pfPassword; private JButton btnLogin; private JButton btnRegister; // 定义 MySQL 数据库连接信息 private static final String DB_URL = "jdbc:mysql://localhost:3306/mydatabase"; private static final String DB_USER = "root"; private static final String DB_PASS = "password"; public LoginGUI() { super("Login or Register"); // 创建登录注册选项卡 JTabbedPane tabbedPane = new JTabbedPane(); JPanel loginPanel = createLoginPanel(); JPanel registerPanel = createRegisterPanel(); tabbedPane.addTab("Login", loginPanel); tabbedPane.addTab("Register", registerPanel); // 添加选项卡到主窗口 this.add(tabbedPane); // 设置窗口大小和可见性 this.setSize(300, 150); this.setVisible(true); } // 创建登录选项卡 private JPanel createLoginPanel() { JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); // 添加用户名密码字段 JLabel lbUsername = new JLabel("Username:"); tfUsername = new JTextField(20); JLabel lbPassword = new JLabel("Password:"); pfPassword = new JPasswordField(20); panel.add(lbUsername); panel.add(tfUsername); panel.add(lbPassword); panel.add(pfPassword); // 添加登录按钮 btnLogin = new JButton("Login"); btnLogin.addActionListener(e -> login()); panel.add(btnLogin); return panel; } // 创建注册选项卡 private JPanel createRegisterPanel() { JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); // 添加用户名密码字段 JLabel lbUsername = new JLabel("Username:"); tfUsername = new JTextField(20); JLabel lbPassword = new JLabel("Password:"); pfPassword = new JPasswordField(20); panel.add(lbUsername); panel.add(tfUsername); panel.add(lbPassword); panel.add(pfPassword); // 添加注册按钮 btnRegister = new JButton("Register"); btnRegister.addActionListener(e -> register()); panel.add(btnRegister); return panel; } // 登录方法 private void login() { try { // 获取数据库连接 Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS); // 查询用户表是否存在匹配的记录 String query = "SELECT * FROM users WHERE username = ? AND password = ?"; PreparedStatement stmt = conn.prepareStatement(query); stmt.setString(1, tfUsername.getText()); stmt.setString(2, new String(pfPassword.getPassword())); ResultSet rs = stmt.executeQuery(); // 如果找到匹配记录,则登录成功 if (rs.next()) { JOptionPane.showMessageDialog(this, "Login successful!"); } else { JOptionPane.showMessageDialog(this, "Invalid username or password."); } // 关闭数据库连接 rs.close(); stmt.close(); conn.close(); } catch (SQLException ex) { ex.printStackTrace(); } } // 注册方法 private void register() { try { // 获取数据库连接 Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS); // 检查用户名是否已经存在 String query = "SELECT * FROM users WHERE username = ?"; PreparedStatement stmt = conn.prepareStatement(query); stmt.setString(1, tfUsername.getText()); ResultSet rs = stmt.executeQuery(); // 如果用户名已经存在,则注册失败 if (rs.next()) { JOptionPane.showMessageDialog(this, "Username already exists."); } else { // 否则,将新用户添加到用户表中 query = "INSERT INTO users (username, password) VALUES (?, ?)"; stmt = conn.prepareStatement(query); stmt.setString(1, tfUsername.getText()); stmt.setString(2, new String(pfPassword.getPassword())); stmt.executeUpdate(); JOptionPane.showMessageDialog(this, "Registration successful!"); } // 关闭数据库连接 rs.close(); stmt.close(); conn.close(); } catch (SQLException ex) { ex.printStackTrace(); } } public static void main(String[] args) { // 启动应用程序 new LoginGUI(); } } ``` 请注意,此代码仅为示例代码,应根据您的具体要求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全 洛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值