java swing与jdbc实现简单案例

真实感受
最近学校要求完成包含java swing以及jdbc的大作业,于是我就花了一天时间看了看java swing,花了几个小时写了这个小案例。
我感觉这个写得还是比较简单的。不过时间有限,并且其他的也是大同小异,也就写成这个样子啦。
我感觉比较关键的就是如何使用监听器、如何美观布局、以及数据库连接。通过这个小案例,我巩固了自己对于swing以及jdbc的使用。

  1. 设计概述
    该系统是一个简单的csdn登录界面,通过账号密码与后台数据库信息匹配,并且无误后,方可进入进入到博客界面。在设计过程中,我使用了大量监听器来对相应动作做出反应。同时对于会出现的许多情况予以提示,比如遇到账号密码错误或者为空,会给出相应提示。
  2. 案例设计
    实现本系统共需要创建两个类,分别是:
    (1) realizeWin 类
    public class realizeWin {
    public static void main(String[] args);
    public static void getWin();
    }
    在该类中由方法getWin()实现主要的窗口、监听器、组件等。同时为了保证线程安全,使用SwingUtilities.invokeLater(()->getWin())语句。
    (2)dbcon类
    class dbcon{
    public static void keepinfo(String a,String b);
    public static boolean compword(String a,String b);
    }
    在该类中由keepinfo()方法保存注册窗口的账号密码于数据库javap的表inforecord中。compword()方法用于比对登录时,输入的账号密码与数据库表inforecord保存数据是否匹配,如果是,返回ture吗,否则返回false。
  3. 系统实现
    (1)系统运行截图
    系统主窗口
    java swing与jdbc实现简单案例_第1张图片
    点击注册按钮,进入到注册窗口。
    java swing与jdbc实现简单案例_第2张图片
    注册账号,提示保存成功。如果输入内容为空,提示内容为空。
    java swing与jdbc实现简单案例_第3张图片

进入到登录主界面,同时点击登录,登陆成功会显示左侧界面,如果输入内容为空或者密码错误,则给出对应提示窗口。
java swing与jdbc实现简单案例_第4张图片

  1. 具体实现代码
package java项目;

import javax.swing.*;
import java.sql.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class realizeWin {
public static void main(String[] args) {
   SwingUtilities.invokeLater(()->getWin());
   //相比较而言,使用此种写法lambda表达式较为安全。
}

public static void getWin(){	
	JFrame frame=new JFrame("csdn登录");
	frame.setBounds(600,244,250, 250);
	frame.setVisible(true);//设置窗口可见
    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);    //设置当窗口关闭时对Java程序进行的操作。 
	
	
	 ImageIcon imageicon=new ImageIcon("C:\\Users\\xj528\\Desktop\\java\\java小项目所需图片\\csdn.jpg");
	 JLabel pic=new JLabel();
	
	 //修改传入图片的大小。
	 Image image = imageicon.getImage();
	 image=image.getScaledInstance(250, 50, Image.SCALE_DEFAULT);
	 imageicon.setImage(image);	 
	 pic.setIcon(imageicon);
	 
	  //将图片标签组件放置在JPanel面板上面,以便调整位置。
	 JPanel pan=new JPanel();
	 pan.add(pic,JPanel.CENTER_ALIGNMENT);
	 frame.add(pan,BorderLayout.PAGE_START);
	 
     //创建账号密码的输入文本框。
     JLabel lab1=new  JLabel("账号:");
     JTextField text1=new JTextField (15);    
     JLabel lab2=new  JLabel("密码:");
     JPasswordField text2=new JPasswordField (15);
      
      //再次创建JPanel面板,将这些组件放进去。
     JPanel pan1=new JPanel();
     pan1.add(lab1);
     pan1.add(text1);
     pan1.add(lab2);
     pan1.add(text2);
     
     frame.add(pan1,BorderLayout.CENTER);   
     JButton button1=new JButton("注册");  
     JButton button2=new JButton("登录");
   //注册界面需要提供账号以及密码文本框。     
     //给button1 注册按钮注册监听器。
      button1.addActionListener(new ActionListener () {

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub		
			
				//建立注册窗体
				 JFrame f1=new JFrame("csdn注册");	
				 f1.setVisible(true);
				 f1.setDefaultCloseOperation(frame.HIDE_ON_CLOSE);
				 f1.setBounds(600,240,250, 250);
				 
			     JLabel l1=new  JLabel("注册账号:");
			     JTextField t1=new JTextField (15);    
			     JLabel l2=new  JLabel("注册密码:");
			     JPasswordField t2=new JPasswordField (15);
			     JButton b=new JButton("保存");
			     JPanel p=new JPanel();
			     p.add(l1);
			     p.add(t1);
			     p.add(l2);
			     p.add(t2);
			     p.add(b);
			     f1.add(p,BorderLayout.CENTER);
			     //给保存按钮注册监听器 
			     b.addActionListener(new ActionListener() {			    	 
					@Override
					public void actionPerformed(ActionEvent e) {
						// TODO Auto-generated method stub
						
						String acc1=t1.getText();						
						String acc2=new String(t2.getPassword()); 
						System.out.println(acc2);
			  			t1.setText("");
			  			t2.setText("");
						if((acc1!=null && acc1.length()!=0)&&(acc2!=null && acc2.length()!=0)) {
							//保存到数据库。
							dbcon.keepinfo(acc1, acc2);
							
						JDialog dia=new JDialog(f1,"提示 ",true);
					    dia.setBounds(630,300,200, 150);
					  	dia.setDefaultCloseOperation(dia.HIDE_ON_CLOSE);
					  		    
					  	JLabel l=new JLabel("保存成功!");
					  	Font f=new Font("宋体",Font.BOLD,20);
					    l.setFont(f);
					    JPanel p=new JPanel();
					    p.add(l);
					  	dia.add(p,BorderLayout.NORTH);
					  	dia.setVisible(true);
							
			  		      }			  		
			  			else {
			  
			  			//判断账号、密码文本框中内容是否为空。如果是,弹出对话框。
			  		    JDialog dia=new JDialog(f1,"提示 ",true);
			  		    dia.setBounds(630,300,200, 150);
			  		    dia.setDefaultCloseOperation(dia.HIDE_ON_CLOSE);
			  		    
			  		    JLabel l=new JLabel("输入内容不能为空");
			  		    Font f=new Font("宋体",Font.BOLD,20);
			  		    l.setFont(f);
			  		    JPanel p=new JPanel();
			  		    p.add(l);
			  		    dia.add(p,BorderLayout.NORTH);
			  		    dia.setVisible(true);}
			  			
			  		}
					});
		}
     }
    );
      
      //给button2登录 注册监听器
      button2.addActionListener(new ActionListener () {

  		@Override
  		public void actionPerformed(ActionEvent e) {
  			// TODO Auto-generated method stub  			
  			String acc1=text1.getText();
  			String acc2=new String(text2.getPassword()); 
  			text1.setText("");
  			text2.setText("");
            if((acc1!=null && acc1.length()!=0)&&(acc2!=null && acc2.length()!=0)) {
 
  				 
	  			if(dbcon.compword(acc1, acc2)) {
	  			 //建立登录窗体
  				 JFrame f2=new JFrame("csdn博客");	
  				 
  				 f2.setDefaultCloseOperation(frame.HIDE_ON_CLOSE);
  				 f2.setBounds(600,240,290, 580); 
  				 JLabel la=new JLabel();
  				 ImageIcon i=new ImageIcon("C:\\Users\\xj528\\Desktop\\java\\java小项目所需图片\\博客界面.jpg");
 
  				 //修改传入图片的大小。
  				 Image image = i.getImage();
  				 image=image.getScaledInstance(280, 560, Image.SCALE_AREA_AVERAGING);
  				 i.setImage(image);	 
  				 la.setIcon(i);
  				 f2.add(la);
		         f2.setVisible(true);
	  			  }else //如果账号密码不匹配,则弹出提示对话框。
	  				 {
	  		  		    JDialog dia=new JDialog(frame,"提示 ",true);
	  		  		    dia.setBounds(630,300,220, 150);
	  		  		    dia.setDefaultCloseOperation(dia.HIDE_ON_CLOSE);
	  		  		    
	  		  		    JLabel l=new JLabel("账号或者密码错误,请重试");
	  		  		    Font f=new Font("宋体",Font.BOLD,20);
	  		  		    l.setFont(f);
	  		  		    JPanel p=new JPanel();
	  		  		    p.setLayout(new BorderLayout());
	  		  		    p.add(l,BorderLayout.CENTER);
	  		  		    dia.add(p,BorderLayout.NORTH);
	  		  		    dia.setVisible(true);
  				     }
  				 
  		      }
     
  		
  			else {
  
  			//判断账号、密码文本框中内容是否为空。如果是,弹出对话框。
  		    JDialog dia=new JDialog(frame,"提示 ",true);
  		    dia.setBounds(630,300,200, 150);
  		    dia.setDefaultCloseOperation(dia.HIDE_ON_CLOSE);
  		    
  		    JLabel l=new JLabel("输入内容不能为空");
  		    Font f=new Font("宋体",Font.BOLD,20);
  		    l.setFont(f);
  		    JPanel p=new JPanel();
  		    p.add(l);
  		    dia.add(p,BorderLayout.NORTH);
  		    dia.setVisible(true);}
  			
  		}
      });
     
     JPanel pan2=new JPanel();
     pan2.add(button1);
     pan2.add(button2);     
     frame.add(pan2,BorderLayout.PAGE_END);
}

}
//编写一个连接数据库类
 
class dbcon {
	
	
public static void keepinfo(String a,String b) { //用于保存账号密码信息的方法
	
    try {
		//1.注册驱动
         Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

    Connection con = null;
    PreparedStatement pre= null;
    //2.建立连接并插入数据到表
try{
    con =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/javap?useSSL=false","root","123123xj");
    pre=con.prepareStatement("insert into  inforecord values(?,?)");
    pre.setString(1,a);
    pre.setString(2,b); 
    int get=pre.executeUpdate();
    System.out.println("被影响的行数"+get);
	}catch(Exception e){
		e.printStackTrace();
	}
	finally {
		try {
            if(pre!=null)
                pre.close();
            if(con!=null)
                con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

public static boolean compword(String a,String b) { //完成登录时的数据匹配方法即可
	 try {
			//1.注册驱动
	         Class.forName("com.mysql.jdbc.Driver");
	    } catch (ClassNotFoundException e) {
	        e.printStackTrace();
	    }
        boolean istrue=false;
	    Connection con = null;
	    PreparedStatement pre= null;
	    //2.建立连接并查询数据,以此来匹配传入的账号密码是否正确。
	try{
	    con =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/javap?useSSL=false","root","123123xj");
	    pre=con.prepareStatement("select *from inforecord where id=?and psword=?");
	    pre.setString(1, a);
	    pre.setString(2, b);
	    ResultSet res=pre.executeQuery();
	    while(res.next()) {
	    	String id=res.getString(1);
	    	String psword=res.getString(2);
	    	if(id.equalsIgnoreCase(a)&&psword.equalsIgnoreCase(b)){
	    		istrue=true;
	    		break;}
	    	else{
	    		istrue= false;
	    		break;}
           }
	    
		}catch(Exception e){
			e.printStackTrace();
		}
	return istrue;
   }
}



你可能感兴趣的:(笔记,java,jdbc,sql,mysql)