登入界面
界面效果
连接数据库
//注册用户和密码 (1)首先先检查数据库中是否有相应的数据,如果有的话提示"该用户存在,请直接登录。"
private void cheak(String userName, String userPass) throws Exception {
if (validate(userField.getText(), passField.getText())){ //如果有就返回一个true
JOptionPane.showMessageDialog(from, "您已经有账号了请直接登录。");
}
else{ // 加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=login","sa","kangyan");
System.out.println("连接数据库成功");
String sql="insert into dbo.login values(?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql); //作为执行sql语句的对象
pstmt.setString(1,userName);
pstmt.setString(2,userPass);
pstmt.executeUpdate();
pstmt.close();
JOptionPane.showMessageDialog(from, "注册成功请登录。。。。");
}
}
//判断数据库中是否有该用户名和密码
private boolean validate(String userName, String userPass){
String sql="select * from login where login.username='"+userName+"' and login.password='"+userPass+"'";
try(
Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=login","sa","kangyan");
Statement pstmt = con.createStatement();
ResultSet rs=pstmt.executeQuery(sql)){//存放的是从数据库中,返回来的数据结果
//如果查询的ResultSet里有超过一条的记录,则登录成功
if (rs.next()) {
return true;
}
}
catch(Exception e){
e.printStackTrace();
}
return false;
}
实例化一个窗口
private void MyFrame() {
MyFrame myFrame = new MyFrame();
myFrame.setVisible(true); // 设置窗口为可见
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗口关闭操作属性
}
登入界面的GUI组件
public class LoginFrame{
// 登录界面的GUI组件
private JFrame from = new JFrame("游戏登录界面");
private JPanel jp1=new JPanel();
private JPanel jp2=new JPanel();
private JPanel jp3=new JPanel();
private JButton zhuceButton = new JButton("注册");
private JButton loginButton = new JButton("登录");
private JTextField userField = new JTextField(20);
private JTextField passField = new JTextField(20);
public void init()throws Exception{//抛出异常,表示的是本方法不处理异常,交给被调用处处理 ,被调用处必须处理
// 为登录按钮添加事件监听器
loginButton.addActionListener(e -> {
// 登录成功则显示“登录成功”
if (validate(userField.getText(), passField.getText())){
JOptionPane.showMessageDialog(from, "登录成功");
from.setVisible(false);//销毁登陆窗口
MyFrame();//跳转到游戏窗口
System.out.println(1111);
}
// 否则显示“登录失败”
else{
JOptionPane.showMessageDialog(from, "登录失败,账号或密码错误!");
}
});
// 为按钮添加事件监听器
zhuceButton.addActionListener(e -> {
// 注册成功则显示“注册成功”
System.out.println(userField.getText() +"\t"+passField.getText()+"\t"
+validate(userField.getText(), passField.getText()));
try {
cheak(userField.getText(),passField.getText());
}
catch (Exception e1) {
e1.printStackTrace();
}
});
jp1.add(new Label("用户名:"));
jp1.add(userField);
jp2.add(new Label("密码:"));
jp2.add(passField);
jp3.add(zhuceButton);
jp3.add(loginButton);
from.addWindowListener(new mylister()); //给窗口注册事件监听器,当你点了窗口右上方的叉号时此方法被调用
from.add(jp1,BorderLayout.NORTH);//边界布局
from.add(jp2,BorderLayout.CENTER);
from.add(jp3,BorderLayout.SOUTH);
from.pack(); //调整此窗口的大小,以适合其子组件的首选大小和布局
from.setVisible(true);
}
class mylister extends WindowAdapter{
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
喜欢的欢迎点赞加关注,感谢你的认可!
转载自原文链接, 如需删除请联系管理员。
原文链接:各种系统的登入界面,转载请注明来源!