java使用模式对话框添加新用户到数据库

package com.dh.ch11;

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.sql.SQLException;

public class DialogDemo extends JFrame implements ActionListener {
	private JMenuBar menuBar;
	private JMenu menuManage;
	private JMenuItem miAddUser;
	// 声明一个滚动面板
	private JScrollPane sp;
	private JTextArea txtContent;
	// 声明对话框
	private UserDialog userDialog;

	public DialogDemo() {
		super("对话框");
		menuBar = new JMenuBar();
		this.setJMenuBar(menuBar);

		menuManage = new JMenu("用户管理");
		menuBar.add(menuManage);

		miAddUser = new JMenuItem("添加新用户");
		menuManage.add(miAddUser);
		// 注册监听
		miAddUser.addActionListener(this);

		txtContent = new JTextArea(20, 30);
		// 实例化一个滚动面板,置入文本域
		sp = new JScrollPane(txtContent);
		// 将滚动面板添加到窗体中
		this.add(sp);
		this.setSize(300, 200);
		this.setLocation(100, 100);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	// 重写事件处理方法
	public void actionPerformed(ActionEvent e) {
		// 判断是否实例化对话框
		if (userDialog == null) {
			userDialog = new UserDialog(this);
		}
		// 显示对话框
		userDialog.setVisible(true);
	}

	public static void main(String[] args) {
		DialogDemo f = new DialogDemo();
		f.setVisible(true);
	}

	// 创建一个对话框类
	class UserDialog extends JDialog implements ActionListener {
		JPanel p;
		JLabel lblName, lblPwd,lblRepwd, lblType;
		JTextField txtName;
		JPasswordField txtPwd;
		JPasswordField txtRepwd;
		JComboBox cmbType;
		JButton btnOK, btnCancle;

		public UserDialog(JFrame f) {
			super(f, "添加新用户", true);
			p = new JPanel(new GridLayout(5, 2));
			lblName = new JLabel("用户名");
			lblPwd = new JLabel("密码");
			lblRepwd = new JLabel("确认密码");
			lblType = new JLabel("类型");
			txtName = new JTextField(10);
			txtPwd = new JPasswordField(10);
			txtRepwd = new JPasswordField(10);
			String str[] = { "教师", "学生", "管理员" };
			cmbType = new JComboBox(str);
			btnOK = new JButton("确定");
			btnCancle = new JButton("取消");
			// 注册监听
			btnOK.addActionListener(this);
			btnCancle.addActionListener(this);

			p.add(lblName);
			p.add(txtName);
			p.add(lblPwd);
			p.add(txtPwd);
			p.add(lblRepwd);
			p.add(txtRepwd);
			p.add(lblType);
			p.add(cmbType);
			p.add(btnOK);
			p.add(btnCancle);

			this.add(p);
			// 设置合适的大小
			this.pack();
		}

		// 重写事件处理方法
		public void actionPerformed(ActionEvent e) {
			// 点击确定按钮时
			if (e.getSource() == btnOK) {
				// 获取用户名文本栏的信息
				String strName = txtName.getText();
				// 获取密码栏中的信息
				String strPwd = new String(txtPwd.getPassword());
				// 获取确认密码栏中的信息
				String strRepwd = new String(txtRepwd.getPassword());
				// 验证
				if (strName.equals("")) {
					JOptionPane.showMessageDialog(btnOK, "用户名不能为空!");
					return;
				}
				if (strPwd.equals("")) {
					JOptionPane.showMessageDialog(btnOK, "密码不能为空!");
					return;
				}
				if (strPwd.length() < 6 || strPwd.length() > 10) {
					JOptionPane.showMessageDialog(btnOK, "密码长度应在6~10之间!");
					return;
				}
				
				if (strRepwd.equals("")) {
					JOptionPane.showMessageDialog(btnOK, "确认密码不能为空!");
					return;
				}
				if (strRepwd.length() < 6 || strRepwd.length() > 10) {
					JOptionPane.showMessageDialog(btnOK, "确认密码密码长度应在6~10之间!");
					return;
				}
				
				if (!strRepwd.equals(strPwd)) {
					JOptionPane.showMessageDialog(btnOK, "密码和确认密码输入不一致!");
					return;
				}
				String strType = cmbType.getSelectedItem().toString();
				// 数据库访问
				DBUtil db = new DBUtil();
				try {
					db.getConnection();
					String sql = "INSERT INTO USERDETAIL VALUES(?,?,?)";
					if (db.executeUpdate(sql, new String[] { strName, strPwd,
							strType }) == 1) {
						// 以追加的方式在文本域中显现信息
						txtContent.append("新用户添加成功!\n\n");
					} else {
						txtContent.append("新用户添加失败!请检查数据是否正确,再重新添加!\n\n");
					}
				} catch (Exception ex) {
					ex.printStackTrace();
				}finally{
					db.closeAll();
				}

				// 隐藏对话框
				this.setVisible(false);
			}
			// 点击取消按钮时
			if (e.getSource() == btnCancle) {
				// 清空文本栏
				txtName.setText("");
				txtPwd.setText("");
				// 隐藏
				this.setVisible(false);
			}
		}
	}
}

在数据库中建表

CREATE TABLE USERDETALT(
	USERNAME VARCHAR(20) PRIMARY KEY,
	PASSWORD VARCHAR(10) NOT NULL,
	ROLE  VARCHAR(20) NOT NULL
	);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值