java基础之登录程序
注:此版本仅供学习使用!
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基础之登录程序的更多相关文章
- Java基础笔记(2) 程序入口 关键字 标识符 常量 变量
提醒:关于那些和我一样新鸟来看资料的,能看懂多少看多少,看不懂的就是不重要,重要的你想我自己学习肯定要标注的,这些信息明白每个知识点实际作用就好了,其他的比如等会讲的常量内存,常量池这些都是我找的资料 ...
- JAVA 基础知识。程序运方法。
dos 常用命令 dir 查看此文件夹目录下的所有程序 cd.. 返回上一层目录 盘符: 直接切换至相应的盘符 cd 目录 切换至指定的目录 cd ...
- java基础知识--入门程序说明
①main方法:称为主方法,写法格式固定,是程序的入口或起始点,无论我们编写多少程序,JVM在运行的时候,都会从main方法这里开始执行. ②注释:对代码的解释说明.单行注释//.多行注释/* */. ...
- Java基础00-第一个程序2
1. 常用DOS命令 1.1 打开命令提示窗口 按下win+R 输入cmd 按下回车键 得到命令提示窗口 1.2 常用命令 2. Path环境变量的配置 2.1 为什么要配置Path环境变量 2.2 ...
- Java基础-程序流程控制第一弹(分支结构/选择结构)
Java基础-程序流程控制第一弹(分支结构/选择结构) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.if语句 1>.if语句的第一种格式 if(条件表达式){ 语句体: ...
- 黑马程序员----java基础笔记中(毕向东)
<p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...
- 黑马程序员----java基础笔记上(毕向东)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...
- 黑马程序员——【Java基础】——Java概述
---------- android培训.java培训.期待与您交流! ---------- 一.Java语言概述及三大技术架构 1.Java语言概述 Java是SUN公司于1995年推出的一种面向I ...
- 黑马程序员:Java基础总结----泛型(高级)
黑马程序员:Java基础总结 泛型(高级) ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 泛型(高级) 泛型是提供给javac编译器使用的,可以限定集合中的输入类型 ...
随机推荐
- 分享一个利用HTML5制作的海浪效果代码
在前面简单讲述了一下HTML里的Canvas,这次根据Canvas完成了“海浪效果”(水波上升). (O(∩_∩)O哈哈哈~作者我能看这个动画看一下午) 上升水波.gif 动画分析构成:贝塞尔曲线画布 ...
- Linux 调节分辨率
首先,你要有 GUI 才能设置分辨率 Tool of xrandr xrandr -s 1360x768
- MongDB from execCommand not master
count failed: not master{ , "errmsg" : "not master" } at src/mongo/shell/query.j ...
- location的属性
http://localhost:8080/?a=b#/login location.host "localhost:8080" location.port 8080 locati ...
- checkbox的常见问题
1.在使用checkbox时,最好不要阻止他原有的事件,要利用它原有的事件进行控制 2.尽量使用label for属性,不要对input元素的父元素或者input本身绑定事件,这样不能有效的避免冒泡事 ...
- 华为敏捷/DevOps实践:产品经理如何开好迭代计划会议
大家好,我是华为云DevCloud项目管理服务的产品经理恒少,作为布道师和产品经理,出差各地接触客户是常态,线下和华为云的客户交流.布道.技术沙龙. 但是线下交流,覆盖的用户总还是少数.我希望借助线上 ...
- eclipse的一些快捷键记录
查看所有快捷键:Ctrl + Shift + L Ctrl + Shift + F:格式化(关闭搜狗输入法的所有快捷键) Alt + /:智能提示,自动补全 Ctrl + / :添加单行注释(取消:C ...
- nodejs post 数据到php $_POST["content"]接收不到的问题
今天写了一段代码,要用到ajax调用php的接口,因为是https的,所以ajax不能跨域,于是使用nodejs调用接口,但是传输数据后 $_POST["content"]接收不到 ...
- Qt 学习之路 2(28):坐标系统
Qt 学习之路 2(28):坐标系统 豆子 2012年11月25日 Qt 学习之路 2 59条评论 在经历过实际操作,以及前面一节中我们见到的那个translate()函数之后,我们可以详细了解下 Q ...
- [Microsoft] 微软技术平台的Cloud Building平台AppVeyor
Link: http://www.tuicool.com/articles/uMBZba http://www.appveyor.com/ 随着云技术的不断完善,基于云的应用越发丰富起来.AppVey ...