基于Java+Swing

Posted AK774S

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Java+Swing相关的知识,希望对你有一定的参考价值。

----------- 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 ------------------------------------------------------------

下面是游戏的几个效果展示:

我玩儿的菜哈,各位见谅~~

[](()(2)游戏设置


为何颜色不一样呢?因为是可以自定义游戏中方块的颜色、游戏难度、游戏背景音乐、游戏中方块落下的速度、方块是否自动上升、游戏背景图片…:

其余界面这里不再展示~~

[](()(二)源代码实例

=======================================================================

Version.java

package view;

import javax.swing.*;

import javax.swing.event.*;

import java.awt.*;

public class Version extends JDialog

JLabel jl1=new JLabel("CSDN博客 ");

JLabel jl2=new JLabel(“作者: 追光者♂”);

JLabel jl3=new JLabel(“俄罗斯方块8.0”);

JPanel jp=new JPanel();

public Version(JFrame j,String s,boolean b)

super(j,s,b);

this.setBounds(400, 120, 200, 200);

this.setVisible(true);

this.setResizable(false);

jp.setLayout(new GridLayout(3, 1));

jp.add(jl1);

jp.add(jl2);

jp.add(jl3);

this.add(jp);

GameCanvas.java

package view;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.util.Random;

import javax.swing.JPanel;

import javax.swing.border.EtchedBorder;

import model.Block;

import model.Box;

public class GameCanvas extends JPanel

private Color backColor = Color.GRAY, frontColor = Color.orange;

private int rows, cols, score = 0, scoreForLevelUpdate = 0;

private Box[][] boxes;

private int boxWidth=25, boxHeight=25;

private boolean gameOver=false;

public boolean pau=false;

/**

  • 画布类的构造函数

  • @param rows int, 画布的行数

  • @param cols int, 画布的列数

  • 行数和列数决定着画布拥有方格的数目

*/

public GameCanvas(int rows, int cols)

this.rows = rows;

this.cols = cols;

this.setOpaque(false);

boxes = new Box[rows][cols];

for (int i = 0; i < boxes.length; i++)

for (int j = 0; j < boxes[i].length; j++)

boxes[i][j] = new Box(false);

setBounds(0, 0, 300, 500);//设置相对位置坐标

setBorder(new EtchedBorder(

EtchedBorder.RAISED, Color.white, new Color(148, 145, 140)));

/**

  • 画布类的构造函数

  • @param rows 与public GameCanvas(int rows, int cols)同

  • @param cols 与public GameCanvas(int rows, int cols)同

  • @param backColor Color, 背景色

  • @param frontColor Color, 前景色

*/

public GameCanvas(int rows, int cols,

Color backColor, Color frontColor)

this(rows, cols);

this.backColor = backColor;

this.frontColor = frontColor;

/**

  • 设置游戏背景色彩

  • @param backColor Color, 背景色彩

*/

public void setBackgroundColor(Color backColor)

this.backColor = backColor;

/**

  • 取得游戏背景色彩

  • @return Color, 背景色彩

*/

public Color getBackgroundColor()

return backColor;

/**

  • 设置游戏方块色彩

  • @param frontColor Color, 方块色彩

*/

public void setBlockColor(Color frontColor)

this.frontColor = frontColor;

/**

  • 取得游戏方块色彩

  • @return Color, 方块色彩

*/

public Color getBlockColor()

return frontColor;

/**

  • 取得画布中方格的行数

  • @return int, 方格的行数

*/

public int getRows()

return rows;

/**

  • 取得画布中方格的列数

  • @return int, 方格的列数

*/

public int getCols()

return cols;

/**

  • 取得游戏成绩

  • @return int, 分数

*/

public int getScore()

return score;

/**

  • 取得自上一次升级后的积分

  • @return int, 上一次升级后的积分

*/

public int getScoreForLevelUpdate()

return scoreForLevelUpdate;

/**

  • 得到某一行某一列的方格引用。

Java实现注册登录系统——基于Java Swing实现

技术简介:Java Swing 介绍

Swing 是一个为Java设计的GUI工具包。

Swing是JAVA基础类的一部分。

Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表。

Swing提供许多比AWT更好的屏幕显示元素。它们用纯Java写成,所以同Java本身一样可以跨平台运行,这一点不像AWT。它们是JFC的一部分。它们支持可更换的面板和主题(各种操作系统默认的特有主题),然而不是真的使用原生平台提供的设备,而是仅仅在表面上模仿它们。这意味着你可以在任意平台上使用JAVA支持的任意面板。轻量级组件的缺点则是执行速度较慢,优点就是可以在所有平台上采用统一的行为。

  以上简介是引用的菜鸟教程里面的介绍,这个教程还是很不错的,比较简洁明了;点此这里查看菜鸟教程

首先呢,我们既然要实现一个用户注册登录系统基于-Java Swing,就避免不了和数据库打交道,在这里我们选择MySQL数据库,采用的数据库驱动jar是:mysql-connector-java-5.1.22-bin.jar

1.第一步我们需要建立我们的数据库表,因为只涉及到用户的注册登录行为,我们的表结构很简单,只有用户名(username)和用户密码(password),我们的数据库名为mysql,表名为jdbc_dome 表结构如下图所示:  

2.第二步我们来创建创建Java project 命名随你意;在这里我起的贪吃鬼(这个案例是我之前做的贪吃蛇小游戏的注册登录哪来的-)

项目目录如下图所示:

3.将下来我们就直接贴代码啦,代码里面该有的注释我都写上了,总共就三个包:一个包中是连接数据库的类(里面封装好了数据库连接以及释放资源的静态方法,直接在用的时候用类名调用就可以了)另一个是注册登录的类,还有一个图片资源包(里面放了一下我们所需要的图片)

  1> 创建包com.mooc.login 类Login.java和Register.java

   Login.java类   //用户登录窗体

package com.mooc.login;

import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Label;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

import com.mooc.jdbcUtil.jdbcUtil;
import com.mysql.jdbc.Statement;
/**
 * 用户登录
 * @author 大南海
 *
 */
public class Login extends JFrame
     
	private JPanel contentPane;
	private JButton btn1,btn2,btn3;
	private JTextField userName;
	private JPasswordField password;
	private JLabel label1,label2;
	
	private int LOGIN_WIDTH=360;
	private int LOGIN_HEIGTH=350;
	
	
	Connection conn;
	Statement stam;
	
	public Login() 
		
	     setTitle("贪吃鬼");  //设置窗体标题
		 setBounds(100, 50, LOGIN_WIDTH, LOGIN_HEIGTH	);  //设置窗体坐标以及打下
		 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //设置窗体可关闭
		 setResizable(false);  //设置窗体大小不可以改变
		 setVisible(true);    //设置窗体可见
		 //设置窗体标题图标
		 setIconImage(
			Toolkit.getDefaultToolkit().getImage(Login.class.getResource("/images/log.jpg"))	 	 
				 );
		 /**
		  * 添加一个面板容器到窗体中
		  */
		 contentPane = new JPanel();
         contentPane.setBackground(Color.WHITE);
		 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
	   	 setContentPane(contentPane);
		 contentPane.setLayout(null);	 
		 //账号标签
		 label1=new JLabel("");
		 label1.setBounds(80,76, 54, 28);
		 label1.setIcon(new ImageIcon(Login.class.getResource("/images/user.png")));
		 contentPane.add(label1);
		 
		 
		 //密码标签
		 label2=new JLabel("");
		 label2.setBounds(80, 135, 54, 28);
		 label2.setIcon(new ImageIcon(Login.class.getResource("/images/psw.png")));
		 contentPane.add(label2);
	
         //账号输入框
		 userName=new JTextField();
		 userName.setBounds(139, 80, 161, 25);
		 contentPane.add(userName);
		 
		 //密码输入框
		 password=new JPasswordField();
		 password.setBounds(139, 140, 161, 25);
		 
	     contentPane.add(password);
	     
	     
	     //按钮—登录
	     btn1=new JButton("登   录");
	     btn1.setBounds(95, 210, 80, 23);
	     btn1.setIcon(new ImageIcon(Login.class.getResource("/images/btn1.png")));
	     btn1.addActionListener(new ActionListener() 
			
			@Override
			public void actionPerformed(ActionEvent e) 
				if(e.getSource()==btn1) 	 
					try 
						conn=jdbcUtil.getConnection();//获取数据库连接
						stam= (Statement) conn.createStatement();  //创建sql语句执行对象
						//编写sql语句
						String sql="select * from user where username='"+userName.getText()+"'  and password='"+password.getText()+"'     ";
					    //执行sql语句
						ResultSet rs=stam.executeQuery(sql);
						if(rs.next()) 
					    dispose();//关闭当前窗口							
						new Main();
								
					catch (Exception e0) 
						e0.printStackTrace();
					finally 
						jdbcUtil.result(conn, stam);
						
					
				
			
		);
	     contentPane.add(btn1);
	     //按钮—退出
	     btn2=new JButton("退  出");
	     btn2.setBounds(210, 210, 80, 23);
	     btn2.setIcon( new ImageIcon(Login.class.getResource("/images/exit.png")));
	     btn2.addActionListener(new ActionListener() 
			@Override
			public void actionPerformed(ActionEvent e) 
				if(e.getSource()==btn2) 
				    dispose();
				
			
		);
	     
	     
	     contentPane.add(btn2);     
	     //按钮-注册
	     btn3=new JButton("注        册");
	     btn3.setBounds(95,240,200, 23);
	     btn3.setIcon(new ImageIcon(Login.class.getResource("/images/regier.png")));
	     btn3.addActionListener(new ActionListener() 
			
			@Override
			public void actionPerformed(ActionEvent e) 

				 dispose();//关闭登录窗体
				new Register().addMan(); // 打开注册窗体
				
			
		);
	     contentPane.add(btn3);
	     
		
		
	public static void main(String[] args) 
		new Login();
		
		
	

  Register.java类   //用户注册窗体

package com.mooc.login;

import java.awt.Color;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

import com.mooc.jdbcUtil.jdbcUtil;
/**
 * 用户注册
 * @author 大南海
 *
 */

public class Register  extends JFrame 
  
	  private int LOGIN_WIDTH=360;
	  private int LOGIN_HEIGTH=350;
	  private JPanel contentPane;
	  private JTextField userName;
	  private JPasswordField password;
	  private JButton btn3,btn4;
	  private JLabel label3,label4;
	  Connection conn;
	  Statement stam;
	  
	  
       public void addMan() 
		
    	   setTitle("注册");
    	   setTitle("增删改查");
  		   setBounds(100, 50, LOGIN_WIDTH, LOGIN_HEIGTH	);
  		   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  		   setResizable(false);
  		   setVisible(true);
  		   //设置窗体标题图标
  		   setIconImage(
  			Toolkit.getDefaultToolkit().getImage(Login.class.getResource("/images/log.jpg"))	 	 
  				 );
  		   /**
  		   * 添加一个面板容器到窗体中
  		   */
  		   contentPane = new JPanel();
           contentPane.setBackground(Color.WHITE);
  		   contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  	   	   setContentPane(contentPane);
  		   contentPane.setLayout(null);
  		   
  		//账号标签
  		 label3=new JLabel("");
  		 label3.setBounds(80,76, 54, 28);
  		 label3.setIcon(new ImageIcon(Login.class.getResource("/images/user.png")));
  		 contentPane.add(label3);
  		 
  		 
  		 //密码标签
  		 label4=new JLabel("");
  		 label4.setBounds(80, 135, 54, 28);
  		 label4.setIcon(new ImageIcon(Login.class.getResource("/images/psw.png")));
  		 contentPane.add(label4);
  	
           //账号输入框
  		 userName=new JTextField();
  		 userName.setBounds(139, 80, 161, 25);
  		 contentPane.add(userName);
  		 
  		 //密码输入框
  		 password=new JPasswordField();
  		 password.setBounds(139, 140, 161, 25);
  		 
  	     contentPane.add(password);
  		   
  	     btn3=new JButton("登   录");
	     btn3.setBounds(95, 210, 80, 23);
	     btn3.setIcon(new ImageIcon(Login.class.getResource("/images/insist.png")));
  		 btn3.addActionListener(new ActionListener() 
			
			@Override
			public void actionPerformed(ActionEvent e) 
				
				if(e.getSource()==btn3) 
					try 
						
						//加载数据库驱动
						conn=jdbcUtil.getConnection();
						//创建执行sql语句的对象
						stam=conn.createStatement();
						//编写sql语句
						String sql="insert into user values('"+userName.getText()+"','"+password.getText()+"')";
						//执行sql语句
						stam.execute(sql);
						JOptionPane.showMessageDialog(null, "注册成功!");
						dispose();  //关闭注册窗体
					    new Login();  //打开登录窗体
						
						
					catch (Exception e1) 
						e1.printStackTrace();
					finally 
						jdbcUtil.result(conn, stam);
					
					
				
				
			
		);
	     
	     contentPane.add(btn3);
  		  
  		 btn4=new JButton("退  出");
	     btn4.setBounds(210, 210, 80, 23);
	     btn4.setIcon( new ImageIcon(Login.class.getResource("/images/exit.png")));
	     btn4.addActionListener(new ActionListener() 
			
			@Override
			public void actionPerformed(ActionEvent e) 
			
				if(e.getSource()==btn4) 
				  
				    dispose();
				
				
				
				
			
		);
	     
	     
	     contentPane.add(btn4);
	     
	
	
	

另外你可以创建一个登录成功后的窗体:比如Mian.java 

package com.mooc.login;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.LinkedList;
import java.util.WeakHashMap;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JOptionPane;

public class Main extends JFrame 

	private static final int GAME_WIDTH = 1100;
	private static final int GAME_HEIGTH = 600;
	

	/**
	 * 构造方法
	 */
	public Main() 
		setTitle("主界面");
		setSize(GAME_WIDTH, GAME_HEIGTH);
		setResizable(false);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		setBackground(Color.darkGray);
		setLocationRelativeTo(null);// 居中显示
		
	
		
	



   2>创建包com.mooc.jdbcUtil  类jdbcUtil,java

    类jdbcUtil,java   //数据库封装操作类

package com.mooc.jdbcUtil;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
 *      数据库连接类
 * @author 大南海
 *
 */
public class jdbcUtil 

	private static final String dricerClass;
	private static final String url;
	private static final String username;
	private static final String password;

	static 
		dricerClass = "com.mysql.jdbc.Driver";
		url = "jdbc:mysql:///jdbc_dome";
		username = "root";
		password = "root";
	

	/*
	 * 加载数据库的方法
	 */

	public static void locadClass() throws ClassNotFoundException 

		Class.forName(dricerClass);
	

	/*
	 * 获取数据库连接的方法
	 */
	public static Connection getConnection() throws Exception 

		Connection conn = DriverManager.getConnection(url, username, password);

		return conn;
	

	/*
	 * 关闭连接并释放资源的方法
	 */
	public static void result(Connection conn, Statement stam) 

		if (conn != null) 

			try 
				conn.close();
			 catch (SQLException e) 
				// TODO Auto-generated catch block
				e.printStackTrace();
			
			conn = null;
		

		if (stam != null) 

			try 
				stam.close();
			 catch (SQLException e) 
				// TODO Auto-generated catch block
				e.printStackTrace();
			
			stam = null;
		
	

	/*
	 * 关闭连接并释放资源的方法
	 */
	public static void result(Connection conn, Statement stam, ResultSet rs) 

		if (conn != null) 

			try 
				conn.close();
			 catch (SQLException e) 
				// TODO Auto-generated catch block
				e.printStackTrace();
			
			conn = null;
		

		if (stam != null) 

			try 
				stam.close();
			 catch (SQLException e) 
				// TODO Auto-generated catch block
				e.printStackTrace();
			
			stam = null;
		
		if (rs != null) 
			try 
				rs.close();
			 catch (SQLException e) 
				// TODO Auto-generated catch block
				e.printStackTrace();
			
			rs = null;
		

	


运行截图:

  

截止现在 我们的这个简单小例子-注册登录就算完成了,以上内容功能是不缺少了,可能会缺少图片资源。你也可以自己找一下;你也可以选择下使用我之前上传的这个资源案例,是个小游戏(贪吃蛇),其中也包含这个注册登录;点击这里可以下载:

https://download.csdn.net/download/u014543872/10780768​​​​​​​

谢谢你的浏览,以上内容如有错误欢迎在评论区指出或者私信我;

以上是关于基于Java+Swing的主要内容,如果未能解决你的问题,请参考以下文章

一名工作8年的Java架构师分享经验之如何成为一名架构师

Java课程设计基于Java Swing 的图书管理系统

Mysql学习基于Swing+jdbc+mysql的Java图书管理系统保姆级教程

大厂架构师经验分享!java程序员月薪多少

大厂架构师经验分享!java程序员月薪多少

八年Java开发经验大佬,分享各专题面试文档及架构知识!