注:此版本仅供学习使用!

Login.java

 import java.awt.Font;
import java.awt.event.*;
import java.sql.*; import javax.swing.*;
import javax.swing.border.EmptyBorder; @SuppressWarnings("serial")
public class Login extends JFrame {
JLabel jla_tips;
JLabel jla_username;
JTextField jtf_username;
JLabel jla_password;
JPasswordField jpf_password;
JButton jbt_login;
JButton jbt_cancel;
int count=0; public Login() {
ImageIcon icon = new ImageIcon("images/favicon.png");
setIconImage(icon.getImage()); JPanel contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null); jla_tips = new JLabel();
jla_tips.setBounds(155, 40, 200, 25);
contentPane.add(jla_tips); jla_username = new JLabel("用户名:");
jla_username.setBounds(80, 70, 60, 25);
contentPane.add(jla_username); jtf_username = new JTextField();
jtf_username.setHorizontalAlignment(JTextField.LEFT);
jtf_username.setBounds(150, 70, 150, 25);
contentPane.add(jtf_username); jla_password = new JLabel("密 码:");
jla_password.setBounds(80, 120, 60, 25);
contentPane.add(jla_password); jpf_password = new JPasswordField();
jpf_password.setBounds(150, 120, 150, 25);
contentPane.add(jpf_password); // 登录按钮
jbt_login = new JButton("登录");
jbt_login.setFocusPainted(false);
jbt_login.setBounds(150, 170, 70, 30);
contentPane.add(jbt_login);
jbt_login.addActionListener(new loginListener());
jpf_password.addActionListener(new loginListener()); // 置空按钮
jbt_cancel = new JButton("取消");
jbt_cancel.setFocusPainted(false);
jbt_cancel.setBounds(235, 170, 70, 30);
contentPane.add(jbt_cancel);
jbt_cancel.addActionListener(new cancelListener()); // 背景图
Icon login3 = new ImageIcon("images/login3.jpg");
JLabel jla_login3 = new JLabel(login3);
jla_login3.setBounds(0, 0, 450, 300);
contentPane.add(jla_login3); // 字体设置
Font fontstr = new Font("宋体", Font.PLAIN, 14);
jla_username.setFont(fontstr);
jla_password.setFont(fontstr);
jla_tips.setFont(fontstr);
jbt_login.setFont(fontstr);
jbt_cancel.setFont(fontstr); setTitle("登录");
setSize(450, 300);
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
} public class cancelListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent arg0) {
jtf_username.setText(null);
jpf_password.setText(null);
} }
public class loginListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String username = jtf_username.getText().trim();
char[] values = jpf_password.getPassword();
String password = new String(values);
if (username != null && username.length() != 0 && password != null
&& password.length() != 0) {
try {
// 1.注册驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// 2.建立连接
// 2.1连接串
String DBurl = "jdbc:sqlserver://localhost:1433;DatabaseName=JavaDB";
String DBname="sa";
String DBpwd="940523";
Connection con = DriverManager.getConnection(DBurl,DBname,DBpwd); // 创建会话
// Statement st = con.createStatement();
// String sql = "select count(*) as cnt from T_user where username='"
// + username + "' and password='" + password + "'";
// ResultSet rs = st.executeQuery(sql); /*
* 防止SQL注入
*/
String sql = "select count(*) as cnt from T_user where username=? and password=?";
PreparedStatement st = con.prepareStatement(sql);
st.setString(1, username);
st.setString(2, password);
String sql2 = "select count(*) as cnt from T_user where username=?";
PreparedStatement st2 = con.prepareStatement(sql2);
st2.setString(1, username);
// 结果集
ResultSet rs = st.executeQuery();
ResultSet rs2 = st2.executeQuery(); rs.next();
rs2.next();
if (rs.getInt("cnt") > 0) {
setVisible(false);
new Hello();
} else if (rs2.getInt("cnt") == 0) {
JOptionPane.showMessageDialog(null, "无该用户!");
}else {
jla_tips.setText("密码错误!");
count++;
if(count==3){
JOptionPane.showMessageDialog(null, "登录失败超过三次!");
System.exit(0);
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
} else {
if (username.length() == 0 && password.length() == 0)
jla_tips.setText("帐号与密码均不能为空!");
else if (username.length() == 0)
jla_tips.setText("帐号不能为空!");
else if (password.length() == 0)
jla_tips.setText("密码不能为空!");
}
}
} public static void main(String[] args) {
new Login();
}
}

hello.java

 import java.awt.Font;
import javax.swing.*;
import javax.swing.border.EmptyBorder; @SuppressWarnings("serial")
public class Hello extends JFrame {
JLabel jla_title; public Hello() {
ImageIcon icon = new ImageIcon("images/favicon.png");
setIconImage(icon.getImage()); JPanel contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null); jla_title = new JLabel();
jla_title.setText("欢迎使用本软件!");
jla_title.setBounds(120, 100, 200, 25);
// 字体设置
Font fontstr = new Font("宋体", Font.PLAIN, 26);
jla_title.setFont(fontstr);
contentPane.add(jla_title); setTitle("欢迎界面");
setSize(450, 300);
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
} // public static void main(String[] args) {
// new Hello();
// }
}

下载链接:http://pan.baidu.com/s/1pJAtf1T密码: 1kkz

java基础之登录程序的更多相关文章

  1. Java基础笔记(2) 程序入口 关键字 标识符 常量 变量

    提醒:关于那些和我一样新鸟来看资料的,能看懂多少看多少,看不懂的就是不重要,重要的你想我自己学习肯定要标注的,这些信息明白每个知识点实际作用就好了,其他的比如等会讲的常量内存,常量池这些都是我找的资料 ...

  2. JAVA 基础知识。程序运方法。

    dos     常用命令    dir     查看此文件夹目录下的所有程序    cd..    返回上一层目录    盘符:  直接切换至相应的盘符    cd 目录 切换至指定的目录    cd ...

  3. java基础知识--入门程序说明

    ①main方法:称为主方法,写法格式固定,是程序的入口或起始点,无论我们编写多少程序,JVM在运行的时候,都会从main方法这里开始执行. ②注释:对代码的解释说明.单行注释//.多行注释/* */. ...

  4. Java基础00-第一个程序2

    1. 常用DOS命令 1.1 打开命令提示窗口 按下win+R 输入cmd 按下回车键 得到命令提示窗口 1.2 常用命令 2. Path环境变量的配置 2.1 为什么要配置Path环境变量 2.2 ...

  5. Java基础-程序流程控制第一弹(分支结构/选择结构)

    Java基础-程序流程控制第一弹(分支结构/选择结构) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.if语句 1>.if语句的第一种格式 if(条件表达式){ 语句体: ...

  6. 黑马程序员----java基础笔记中(毕向东)

    <p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...

  7. 黑马程序员----java基础笔记上(毕向东)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...

  8. 黑马程序员——【Java基础】——Java概述

    ---------- android培训.java培训.期待与您交流! ---------- 一.Java语言概述及三大技术架构 1.Java语言概述 Java是SUN公司于1995年推出的一种面向I ...

  9. 黑马程序员:Java基础总结----泛型(高级)

    黑马程序员:Java基础总结 泛型(高级)   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 泛型(高级) 泛型是提供给javac编译器使用的,可以限定集合中的输入类型 ...

随机推荐

  1. kali linux之主动信息收集(三层发现,四层发现)

    三层发现: 比二层发现的优点即可路由,就是速度比二层慢,相对我们来说还是算快的,经常被边界防火墙过滤 ip icmp协议 OSI七层模型

  2. linux下文件权限的介绍

    linux操作系统下,使用ll查看该目录下所有文件及其文件权限,以下是对文件权限的介绍 d代表的是目录(或称之为文件夹)   红框内的这3个是代表3个组的权限每组都是3个 第一组rwx代表是本用户的权 ...

  3. MATLAB版本(2012b 64bit),在尝试调用svmtrain函数时报错

    问题:MATLAB版本(2012b 64bit),在尝试调用svmtrain函数时报错: 解决方案:参照https://blog.csdn.net/TIME_LEAF/article/details/ ...

  4. Tarjan 点双+割点+DFS【洛谷P3225】 [HNOI2012]矿场搭建

    P3225 [HNOI2012]矿场搭建 题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤 ...

  5. 传智播客Springmvc_mybatis学习笔记

    文件地址:https://download.csdn.net/download/qq_26078953/10614459

  6. select 插入数据 不自增列实现自增

  7. 24.Letter Combinations of a Phone Number(电话号对应的字符组合)

    Level:   Medium 题目描述: Given a string containing digits from 2-9 inclusive, return all possible lette ...

  8. python-global全局变量

    在函数内部定义变量时,他们与函数外部具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是局部的,这称为变量的作用域,示例如下: def func_local(x): print 'x is', ...

  9. C# 关于Grid下动态删除行列的操作

    假设我们有以下布局 <Grid x:Name="Grid" ShowGridLines="True"> <Grid.RowDefinition ...

  10. springboot(二)框架整合

    我们做web项目或者写api接口通常使用的是springmvc+spring+mybatis+mysql,那么使用springboot之后,默认是集成了所有的后台框架,只需要添加dependency依 ...