Check out all Swing tutorials and examples at https://www.javaguides.net/p/java-swing-tutorial.html
Video Tutorial
Tools and Technologies used
- JDK 1.8
- MySQL Connector Java - 8.0.13
- JDBC - 4.2
- Eclipse IDE
What we'll build?
- User login
- User Logout
- User Change Password
Database Setup
create database swing_demo;
CREATE TABLE student
( id int NOT NULL,
name varchar(250) NOT NULL,
password varchar(250)
);
INSERT INTO student (id, name, password)
VALUES (1, 'Ramesh', 'Ramesh@1234');
Create a Simple Java Project
Connecting With Database
Develop User Login Form
package com.javaguides.javaswing.login;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
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;
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;
public class UserLogin extends JFrame {
private static final long serialVersionUID = 1L;
private JTextField textField;
private JPasswordField passwordField;
private JButton btnNewButton;
private JLabel label;
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
UserLogin frame = new UserLogin();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public UserLogin() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(450, 190, 1014, 597);
setResizable(false);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblNewLabel = new JLabel("Login");
lblNewLabel.setForeground(Color.BLACK);
lblNewLabel.setFont(new Font("Times New Roman", Font.PLAIN, 46));
lblNewLabel.setBounds(423, 13, 273, 93);
contentPane.add(lblNewLabel);
textField = new JTextField();
textField.setFont(new Font("Tahoma", Font.PLAIN, 32));
textField.setBounds(481, 170, 281, 68);
contentPane.add(textField);
textField.setColumns(10);
passwordField = new JPasswordField();
passwordField.setFont(new Font("Tahoma", Font.PLAIN, 32));
passwordField.setBounds(481, 286, 281, 68);
contentPane.add(passwordField);
JLabel lblUsername = new JLabel("Username");
lblUsername.setBackground(Color.BLACK);
lblUsername.setForeground(Color.BLACK);
lblUsername.setFont(new Font("Tahoma", Font.PLAIN, 31));
lblUsername.setBounds(250, 166, 193, 52);
contentPane.add(lblUsername);
JLabel lblPassword = new JLabel("Password");
lblPassword.setForeground(Color.BLACK);
lblPassword.setBackground(Color.CYAN);
lblPassword.setFont(new Font("Tahoma", Font.PLAIN, 31));
lblPassword.setBounds(250, 286, 193, 52);
contentPane.add(lblPassword);
btnNewButton = new JButton("Login");
btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 26));
btnNewButton.setBounds(545, 392, 162, 73);
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String userName = textField.getText();
String password = passwordField.getText();
try {
Connection connection = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/swing_demo",
"root", "root");
PreparedStatement st = (PreparedStatement) connection
.prepareStatement("Select name, password from student where name=? and password=?");
st.setString(1, userName);
st.setString(2, password);
ResultSet rs = st.executeQuery();
if (rs.next()) {
dispose();
UserHome ah = new UserHome(userName);
ah.setTitle("Welcome");
ah.setVisible(true);
JOptionPane.showMessageDialog(btnNewButton, "You have successfully logged in");
} else {
JOptionPane.showMessageDialog(btnNewButton, "Wrong Username & Password");
}
} catch (SQLException sqlException) {
sqlException.printStackTrace();
}
}
});
contentPane.add(btnNewButton);
label = new JLabel("");
label.setBounds(0, 0, 1008, 562);
contentPane.add(label);
}
}
Learn complete JDBC tutorial at https://www.javaguides.net/p/jdbc-tutorial.html.
Develop User Home Page
package com.javaguides.javaswing.login;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
public class UserHome extends JFrame {
private static final long serialVersionUID = 1 L;
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
UserHome frame = new UserHome();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public UserHome() {
}
/**
* Create the frame.
*/
public UserHome(String userSes) {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(450, 190, 1014, 597);
setResizable(false);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JButton btnNewButton = new JButton("Logout");
btnNewButton.setForeground(new Color(0, 0, 0));
btnNewButton.setBackground(UIManager.getColor("Button.disabledForeground"));
btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 39));
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int a = JOptionPane.showConfirmDialog(btnNewButton, "Are you sure?");
// JOptionPane.setRootFrame(null);
if (a == JOptionPane.YES_OPTION) {
dispose();
UserLogin obj = new UserLogin();
obj.setTitle("Student-Login");
obj.setVisible(true);
}
dispose();
UserLogin obj = new UserLogin();
obj.setTitle("Student-Login");
obj.setVisible(true);
}
});
btnNewButton.setBounds(247, 118, 491, 114);
contentPane.add(btnNewButton);
JButton button = new JButton("Change-password\r\n");
button.setBackground(UIManager.getColor("Button.disabledForeground"));
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ChangePassword bo = new ChangePassword(userSes);
bo.setTitle("Change Password");
bo.setVisible(true);
}
});
button.setFont(new Font("Tahoma", Font.PLAIN, 35));
button.setBounds(247, 320, 491, 114);
contentPane.add(button);
}
}
Develop Change Password Form
package com.javaguides.javaswing.login;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
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.SQLException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
public class ChangePassword extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTextField textField;
private JLabel lblEnterNewPassword;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public ChangePassword(String name) {
setBounds(450, 360, 1024, 234);
setResizable(false);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
textField = new JTextField();
textField.setFont(new Font("Tahoma", Font.PLAIN, 34));
textField.setBounds(373, 35, 609, 67);
contentPane.add(textField);
textField.setColumns(10);
JButton btnSearch = new JButton("Enter");
btnSearch.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String pstr = textField.getText();
try {
System.out.println("update password name " + name);
System.out.println("update password");
Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/swing_demo",
"root", "root");
PreparedStatement st = (PreparedStatement) con
.prepareStatement("Update student set password=? where name=?");
st.setString(1, pstr);
st.setString(2, name);
st.executeUpdate();
JOptionPane.showMessageDialog(btnSearch, "Password has been successfully changed");
} catch (SQLException sqlException) {
sqlException.printStackTrace();
}
}
});
btnSearch.setFont(new Font("Tahoma", Font.PLAIN, 29));
btnSearch.setBackground(new Color(240, 240, 240));
btnSearch.setBounds(438, 127, 170, 59);
contentPane.add(btnSearch);
lblEnterNewPassword = new JLabel("Enter New Password :");
lblEnterNewPassword.setFont(new Font("Tahoma", Font.PLAIN, 30));
lblEnterNewPassword.setBounds(45, 37, 326, 67);
contentPane.add(lblEnterNewPassword);
}
}
Demo
User Login
Enter User Login Details
User Home Page
User Change Password
User Logout
Related Swing Tutorials
- Java Swing Hello World Example Tutorial - In this tutorial, we will learn how to create a simple Swing hello world program.
- Java Swing Application with Database Connection - In this tutorial, we will learn how to create a Java swing application and connect to a MySQL database using the JDBC API.
- Login Application using Java Swing + JDBC + MySQL Example Tutorial - In this tutorial, we will learn how to create a simple Login application using Java Swing and we authenticate login user with a database using JDBC and MySQL.
- Registration Form using Java Swing + JDBC + MySQL Example Tutorial - In this tutorial, we will learn how to create a Registration Form using Java Swing with database connectivity. Here we will use the MySQL database to store user data via JDBC API.
Continue Learning with Java Guides
Want to take your programming skills to the next level? Explore my practical Udemy courses on Java, Spring Boot, Microservices, Full-Stack Development, Docker, and Generative AI. You can also follow my structured learning roadmaps to become a professional developer.
By Ramesh Fadatare - Udemy Instructor Partner

Thank you brow
ReplyDeleteThank you so much!
ReplyDelete