How to Create Login and Register Form in Java NetBeans with MySQL Database
In this Java Long Tutorial we will go step by step on How To Make a Design a Login Form And a Register Form, plus how to connect those two form with mysql database so the user can signup and signin.
What We Are Gonna Use In This Project:
- Java Programming Language.- NetBeans Editor.
- MySQL Database.
- PhpMyAdmin.
What We Will Do In This Project:
- Design Two Forms For The Login and Signup Using JPanels and Borders.
- Create Two Icons Using JLabels To Minimize and Close The Form.
- Connect Java To MySQL Database, To Add The Registred User Data In The Signup Form or to Check If The User Exist In The Login Form.
- Browse and Select Image From Your Computer and Set The File Path In a JLabel + Save The Image as a Blob in The Database.
- Check If The User Leave Some Fields Empty.
- Check If The User Enter Username That Already Exists.
- Check If The User Enter a Wrong Password In The Confirmation Field.
Project Source Code:
Let's First Start With The Connection.
We Will Create a Class and Let's Call it "My_CNX" To Connect Or Java Program With MySQL Database.
/****************** My_CNX Class Start ******************/
package login_ragister_design;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author 1BestCsharp
*/
public class My_CNX {
private static String servername = "localhost";
private static String username = "root";
private static String dbname = "users_db";
private static Integer portnumber = 3306;
private static String password = "";
public static Connection getConnection()
{
Connection cnx = null;
MysqlDataSource datasource = new MysqlDataSource();
datasource.setServerName(servername);
datasource.setUser(username);
datasource.setPassword(password);
datasource.setDatabaseName(dbname);
datasource.setPortNumber(portnumber);
try {
cnx = datasource.getConnection();
} catch (SQLException ex) {
Logger.getLogger(" Get Connection -> " + My_CNX.class.getName()).log(Level.SEVERE, null, ex);
}
return cnx;
}
}
/****************** My_CNX Class End ******************/
Now Let's Go To The Login Form and See What We Will Do.
/****************** Register Form Start ******************/
// create a variable to set the image path in it
String image_path = null;
public Register_Form() {
initComponents();
// center the form
this.setLocationRelativeTo(null);
// create a yellow border for the jpanel_title
// 0 border in the top
Border jpanel_title_border = BorderFactory.createMatteBorder(0, 1, 1, 1, Color.yellow);
// set the border to the jPanel_title
jPanel_title.setBorder(jpanel_title_border);
// create a black border for the close & minimize jlables
Border label_border = BorderFactory.createMatteBorder(1, 1, 1, 1, Color.black);
jLabel_minimize.setBorder(label_border);
jLabel_close.setBorder(label_border);
// create a border for the create acconut jlabel
Border label_login_border = BorderFactory.createMatteBorder(0, 0, 1, 0, Color.lightGray);
jLabel_login.setBorder(label_login_border);
// create border for the text and password fields
Border field_border = BorderFactory.createMatteBorder(1, 5, 1, 1, Color.white);
jTextField_Username.setBorder(field_border);
jTextField_Fullname.setBorder(field_border);
jTextField_Phone.setBorder(field_border);
jPasswordField_1.setBorder(field_border);
jPasswordField_2.setBorder(field_border);
// create a button group for the radiobuttons
ButtonGroup bg = new ButtonGroup();
bg.add(jRadioButton_Male);
bg.add(jRadioButton_Female);
}
// jlabel minimize -> mouse click event
private void jLabel_minimizeMouseClicked(java.awt.event.MouseEvent evt) {
this.setState(JFrame.ICONIFIED);
}
// jlabel minimize -> mouse entered event
private void jLabel_minimizeMouseEntered(java.awt.event.MouseEvent evt) {
// change the jlabel border color to white
Border label_border = BorderFactory.createMatteBorder(1, 1, 1, 1, Color.white);
jLabel_minimize.setBorder(label_border);
// set the jlabel foreground to white
jLabel_minimize.setForeground(Color.white);
}
// jlabel minimize -> mouse exited event
private void jLabel_minimizeMouseExited(java.awt.event.MouseEvent evt) {
// reset the jlabel border color to white
Border label_border = BorderFactory.createMatteBorder(1, 1, 1, 1, Color.black);
jLabel_minimize.setBorder(label_border);
// reset the jlabel foreground to white
jLabel_minimize.setForeground(Color.black);
}
// jlabel close -> mouse click event
private void jLabel_closeMouseClicked(java.awt.event.MouseEvent evt) {
System.exit(0);
}
// jlabel close -> mouse entered event
private void jLabel_closeMouseEntered(java.awt.event.MouseEvent evt) {
// change the jlabel border color to white
Border label_border = BorderFactory.createMatteBorder(1, 1, 1, 1, Color.white);
jLabel_close.setBorder(label_border);
// set the jlabel foreground to white
jLabel_close.setForeground(Color.white);
}
// jlabel close -> mouse exited event
private void jLabel_closeMouseExited(java.awt.event.MouseEvent evt) {
// reset the jlabel border color to white
Border label_border = BorderFactory.createMatteBorder(1, 1, 1, 1, Color.black);
jLabel_close.setBorder(label_border);
// reset the jlabel foreground to black
jLabel_close.setForeground(Color.black);
}
// JTextField For The Phone Number -> KeyTyped Event
private void jTextField_PhoneKeyTyped(java.awt.event.KeyEvent evt) {
// allow only numbers
if(!Character.isDigit(evt.getKeyChar())){
evt.consume();
}
}
// button select image
private void jButton_SelectImageActionPerformed(java.awt.event.ActionEvent evt) {
// select an image and set the image path into a jlabel
String path = null;
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File(System.getProperty("user.home")));
// file extension
FileNameExtensionFilter extension = new FileNameExtensionFilter("*.Images","jpg","png","jpeg");
chooser.addChoosableFileFilter(extension);
int filestate = chooser.showSaveDialog(null);
// check if the user select an image
if(filestate == JFileChooser.APPROVE_OPTION){
File selectedImage = chooser.getSelectedFile();
path = selectedImage.getAbsolutePath();
jLabel_imgpath.setText(path);
image_path = path;
}
}
// a jlabel to open the login form on Mouse Clicked Event
private void jLabel_loginMouseClicked(java.awt.event.MouseEvent evt) {
Login_Form lf = new Login_Form();
lf.setVisible(true);
lf.pack();
lf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.dispose();
}
// change the jlabel border color on mouse entered
private void jLabel_loginMouseEntered(java.awt.event.MouseEvent evt) {
Border label_border = BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(0,204,0));
jLabel_login.setBorder(label_border);
}
// reset the jlabel border color on mouse exited
private void jLabel_loginMouseExited(java.awt.event.MouseEvent evt) {
Border label_create_accont_border = BorderFactory.createMatteBorder(0, 0, 1, 0, Color.lightGray);
jLabel_login.setBorder(label_create_accont_border);
}
// create a function to verify the empty fields
public boolean verifyFields()
{
String fname = jTextField_Fullname.getText();
String uname = jTextField_Username.getText();
String phone = jTextField_Phone.getText();
String pass1 = String.valueOf(jPasswordField_1.getPassword());
String pass2 = String.valueOf(jPasswordField_2.getPassword());
// check empty fields
if(fname.trim().equals("") || uname.trim().equals("") || phone.trim().equals("")
|| pass1.trim().equals("") || pass2.trim().equals(""))
{
JOptionPane.showMessageDialog(null, "One Or More Fields Are Empty","Empty Fields",2);
return false;
}
// check if the two password are equals or not
else if(!pass1.equals(pass2))
{
JOptionPane.showMessageDialog(null, "Password Doesn't Match","Confirm Password",2);
return false;
}
// if everything is ok
else{
return true;
}
}
// create a function to check if the entered username already exists in the database
public boolean checkUsername(String username){
PreparedStatement st;
ResultSet rs;
boolean username_exist = false;
String query = "SELECT * FROM `users` WHERE `username` = ?";
try {
st = My_CNX.getConnection().prepareStatement(query);
st.setString(1, username);
rs = st.executeQuery();
if(rs.next())
{
username_exist = true;
JOptionPane.showMessageDialog(null, "This Username is Already Taken, Choose Another One", "Username Failed", 2);
}
} catch (SQLException ex) {
Logger.getLogger(Register_Form.class.getName()).log(Level.SEVERE, null, ex);
}
return username_exist;
}
// button register
private void jButton_RegisterActionPerformed(java.awt.event.ActionEvent evt) {
// get data from fields
String fname = jTextField_Fullname.getText();
String username = jTextField_Username.getText();
String pass1 = String.valueOf(jPasswordField_1.getPassword());
String pass2 = String.valueOf(jPasswordField_2.getPassword());
String phone = jTextField_Phone.getText();
String gender = "Male";
if(jRadioButton_Female.isSelected()){
gender = "Female";
}
// check if the data are empty
if(verifyFields())
{
// check if the username already exists
if(!checkUsername(username))
{
PreparedStatement ps;
ResultSet rs;
String registerUserQuery = "INSERT INTO `users`(`full_name`, `username`, `password`, `phone`, `gender`, `picture`) VALUES (?,?,?,?,?,?)";
try {
ps = My_CNX.getConnection().prepareStatement(registerUserQuery);
ps.setString(1, fname);
ps.setString(2, username);
ps.setString(3, pass1);
ps.setString(4, phone);
ps.setString(5, gender);
try {
// save the image as blob in the database
if(image_path != null){
InputStream image = new FileInputStream(new File(image_path));
ps.setBlob(6, image);
}else{
ps.setNull(6, java.sql.Types.NULL);
}
if(ps.executeUpdate() != 0){
JOptionPane.showMessageDialog(null, "Your Account Has Been Created");
}else{
JOptionPane.showMessageDialog(null, "Error: Check Your Information");
}
} catch (FileNotFoundException ex) {
Logger.getLogger(Register_Form.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (SQLException ex) {
Logger.getLogger(Register_Form.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
/****************** Register Form End ******************/
Now We Will Make The Login Form To Allow The User Enter To The Application
/****************** Login Form Start ******************/
public Login_Form() {
initComponents();
/* - Download The Connector For JAVA & MYSQL database */
/* LINK -> https://dev.mysql.com/downloads/connector/j/5.1.html */
/* OPEN XAMPP and Strat Apache & Mysql */
/* Go to -> http://localhost/phpmyadmin and create a new database */
/* Create a Connection with the database */
// center the form
this.setLocationRelativeTo(null);
// create a yellow border for the jpanel_title
// 0 border in the top
Border jpanel_title_border = BorderFactory.createMatteBorder(0, 1, 1, 1, Color.yellow);
// set the border to the jPanel_title
jPanel_title.setBorder(jpanel_title_border);
// create an orange border for the global panel
Border glob_panel_border = BorderFactory.createMatteBorder(1, 1, 1, 1, Color.orange);
jPanel1.setBorder(glob_panel_border);
// create a black border for the close & minimize jlables
Border label_border = BorderFactory.createMatteBorder(1, 1, 1, 1, Color.black);
jLabel_minimize.setBorder(label_border);
jLabel_close.setBorder(label_border);
// create a border for the create acconut jlabel
Border label_create_accont_border = BorderFactory.createMatteBorder(0, 0, 1, 0, Color.lightGray);
jLabel_Create_Account.setBorder(label_create_accont_border);
// create a border with the color of the parent jpanel for the icons label to remove the move
Border label_icons_border = BorderFactory.createMatteBorder(1, 1, 1, 1, new Color(153,153,153));
jLabel_username.setBorder(label_icons_border);
jLabel_password.setBorder(label_icons_border);
// create border for the username and password field
Border field_border = BorderFactory.createMatteBorder(1, 5, 1, 1, Color.white);
jTextField_Username.setBorder(field_border);
jPasswordField.setBorder(field_border);
}
// jlabel minimize -> mouse entered
private void jLabel_minimizeMouseEntered(java.awt.event.MouseEvent evt) {
Border label_border = BorderFactory.createMatteBorder(1, 1, 1, 1, Color.white);
jLabel_minimize.setBorder(label_border);
jLabel_minimize.setForeground(Color.white);
}
// jlabel minimize -> mouse exited
private void jLabel_minimizeMouseExited(java.awt.event.MouseEvent evt) {
Border label_border = BorderFactory.createMatteBorder(1, 1, 1, 1, Color.black);
jLabel_minimize.setBorder(label_border);
jLabel_minimize.setForeground(Color.black);
}
// jlabel close -> mouse entered
private void jLabel_closeMouseEntered(java.awt.event.MouseEvent evt) {
Border label_border = BorderFactory.createMatteBorder(1, 1, 1, 1, Color.white);
jLabel_close.setBorder(label_border);
jLabel_close.setForeground(Color.white);
}
// jlabel close -> mouse exited
private void jLabel_closeMouseExited(java.awt.event.MouseEvent evt) {
Border label_border = BorderFactory.createMatteBorder(1, 1, 1, 1, Color.black);
jLabel_close.setBorder(label_border);
jLabel_close.setForeground(Color.black);
}
// jtextfield username -> focus gained
private void jTextField_UsernameFocusGained(java.awt.event.FocusEvent evt) {
// clear the textfield on focus if the text is "username"
if(jTextField_Username.getText().trim().toLowerCase().equals("username"))
{
jTextField_Username.setText("");
jTextField_Username.setForeground(Color.black);
}
// set a yellow border to the jlabel icon
Border jlabel_icon = BorderFactory.createMatteBorder(1, 1, 1, 1, Color.yellow);
jLabel_username.setBorder(jlabel_icon);
}
// jtextfield username -> focus lost
private void jTextField_UsernameFocusLost(java.awt.event.FocusEvent evt) {
// if the text field is equal to username or empty
// we will set the "username" text in the field
// on focus lost event
if(jTextField_Username.getText().trim().equals("") ||
jTextField_Username.getText().trim().toLowerCase().equals("username"))
{
jTextField_Username.setText("username");
jTextField_Username.setForeground(new Color(153,153,153));
}
// create a border with the color of the parent jpanel for the icons label to remove the move
Border label_icons_border = BorderFactory.createMatteBorder(1, 1, 1, 1, new Color(153,153,153));
jLabel_username.setBorder(label_icons_border);
}
// password field -> focus gained
private void jPasswordFieldFocusGained(java.awt.event.FocusEvent evt) {
// clear the password field on focus if the text is "password"
// get the password text
String pass = String.valueOf(jPasswordField.getPassword());
if(pass.trim().toLowerCase().equals("password"))
{
jPasswordField.setText("");
jPasswordField.setForeground(Color.black);
}
// set a yellow border to the jlabel icon
Border jlabel_icon = BorderFactory.createMatteBorder(1, 1, 1, 1, Color.yellow);
jLabel_password.setBorder(jlabel_icon);
}
// password field -> focus lost
private void jPasswordFieldFocusLost(java.awt.event.FocusEvent evt) {
// if the password field is equal to password or empty
// we will set the "password" text in the field
// on focus lost event
// get the password text
String pass = String.valueOf(jPasswordField.getPassword());
if(pass.trim().equals("") ||
pass.trim().toLowerCase().equals("password"))
{
jPasswordField.setText("password");
jPasswordField.setForeground(new Color(153,153,153));
}
// create a border with the color of the parent jpanel for the icons label to remove the move
Border label_icons_border = BorderFactory.createMatteBorder(1, 1, 1, 1, new Color(153,153,153));
jLabel_password.setBorder(label_icons_border);
}
// login button -> mouse entered
private void jButton_LoginMouseEntered(java.awt.event.MouseEvent evt) {
// set jbutton background
jButton_Login.setBackground(new Color(0,101,183));
}
// login button -> mouse exited
private void jButton_LoginMouseExited(java.awt.event.MouseEvent evt) {
// set jbutton background
jButton_Login.setBackground(new Color(0,84,104));
}
// jlabel minimize -> mouse clicked
private void jLabel_minimizeMouseClicked(java.awt.event.MouseEvent evt) {
this.setState(JFrame.ICONIFIED);
}
// jlabel close -> mouse clicked
private void jLabel_closeMouseClicked(java.awt.event.MouseEvent evt) {
System.exit(0);
}
// button login
private void jButton_LoginActionPerformed(java.awt.event.ActionEvent evt) {
PreparedStatement st;
ResultSet rs;
// get the username & password
String username = jTextField_Username.getText();
String password = String.valueOf(jPasswordField.getPassword());
//create a select query to check if the username and the password exist in the database
String query = "SELECT * FROM `users` WHERE `username` = ? AND `password` = ?";
// show a message if the username or the password fields are empty
if(username.trim().equals("username"))
{
JOptionPane.showMessageDialog(null, "Enter Your Username", "Empty Username", 2);
}
else if(password.trim().equals("password"))
{
JOptionPane.showMessageDialog(null, "Enter Your Password", "Empty Password", 2);
}
else{
try {
st = My_CNX.getConnection().prepareStatement(query);
st.setString(1, username);
st.setString(2, password);
rs = st.executeQuery();
if(rs.next())
{
// show a new form
Menu_Form form = new Menu_Form();
form.setVisible(true);
form.pack();
form.setLocationRelativeTo(null);
// close the current form(login form)
this.dispose();
}else{
// error message
JOptionPane.showMessageDialog(null, "Invalid Username / Password","Login Error",2);
}
} catch (SQLException ex) {
Logger.getLogger(Login_Form.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
// jlabel create account -> mouse entered
private void jLabel_Create_AccountMouseEntered(java.awt.event.MouseEvent evt) {
Border label_border = BorderFactory.createMatteBorder(0, 0, 1, 0, Color.red);
jLabel_Create_Account.setBorder(label_border);
}
// jlabel create account -> mouse exited
private void jLabel_Create_AccountMouseExited(java.awt.event.MouseEvent evt) {
Border label_create_accont_border = BorderFactory.createMatteBorder(0, 0, 1, 0, Color.lightGray);
jLabel_Create_Account.setBorder(label_create_accont_border);
}
// open the register form when the user click on this jlabel with the mouse
private void jLabel_Create_AccountMouseClicked(java.awt.event.MouseEvent evt) {
Register_Form rf = new Register_Form();
rf.setVisible(true);
rf.pack();
rf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.dispose();
}
/****************** Login Form End ******************/
The Final Result:
The Login Form |
If The User Does Not Enter The Username |
|
If The Username Or The Password Does Not Exist |
The Register/Signup Form |
If The User Left On Field Or More Empty |
If The User Select a Username That Already Exist |
Add The User If Everything Is Ok |
More Java Projects:
Download Projects Source Code
5 comments
commentsplease tell me how to setup this code on my domain
ReplyMuito bacana eu vi no youtube achei muito didatico valeu obrigado
Replythank you, i love programming
Replygenial
ReplySuperb sir
Reply