100 MINIMAL BORDER LOGIN FORMS IN JAVA

INTRODUCTION TO MINIMAL BORDER DESIGN

Minimal Border design focuses on clean, simple interfaces with subtle borders, ample whitespace, and understated elegance. Below are 100 different minimal border login forms created with Java Swing.


SECTION 1: BASIC MINIMAL BORDER FORMS (1-10)

1. Single Line Border Login

import javax.swing.*;
import java.awt.*;
public class SingleLineBorderLogin extends JFrame {
public SingleLineBorderLogin() {
setTitle("Single Line Border Login");
setSize(380, 450);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel mainPanel = new JPanel(new GridBagLayout());
mainPanel.setBackground(Color.WHITE);
// Title
JLabel title = new JLabel("LOGIN");
title.setFont(new Font("Inter", Font.BOLD, 32));
title.setForeground(new Color(33, 33, 33));
// Fields with single bottom border
JTextField username = createSingleBorderField("Username");
JPasswordField password = createSingleBorderPassword("Password");
// Minimal button
JButton loginBtn = createMinimalButton("Sign In");
// Links
JLabel forgotPass = new JLabel("Forgot password?");
forgotPass.setFont(new Font("Inter", Font.PLAIN, 12));
forgotPass.setForeground(new Color(100, 100, 100));
forgotPass.setCursor(new Cursor(Cursor.HAND_CURSOR));
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.insets = new Insets(10, 40, 10, 40);
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridy = 0; gbc.insets = new Insets(50, 40, 20, 40);
mainPanel.add(title, gbc);
gbc.gridy = 1;
mainPanel.add(username, gbc);
gbc.gridy = 2;
mainPanel.add(password, gbc);
gbc.gridy = 3; gbc.insets = new Insets(5, 40, 5, 40);
gbc.anchor = GridBagConstraints.EAST;
mainPanel.add(forgotPass, gbc);
gbc.gridy = 4; gbc.insets = new Insets(30, 40, 50, 40);
gbc.anchor = GridBagConstraints.CENTER;
mainPanel.add(loginBtn, gbc);
add(mainPanel);
setVisible(true);
}
private JTextField createSingleBorderField(String placeholder) {
JTextField field = new JTextField(placeholder);
field.setBorder(BorderFactory.createMatteBorder(0, 0, 2, 0, new Color(200, 200, 200)));
field.setFont(new Font("Inter", Font.PLAIN, 14));
field.setForeground(new Color(50, 50, 50));
field.setCaretColor(new Color(50, 50, 50));
return field;
}
private JPasswordField createSingleBorderPassword(String placeholder) {
JPasswordField field = new JPasswordField(placeholder);
field.setBorder(BorderFactory.createMatteBorder(0, 0, 2, 0, new Color(200, 200, 200)));
field.setFont(new Font("Inter", Font.PLAIN, 14));
field.setForeground(new Color(50, 50, 50));
field.setEchoChar('•');
return field;
}
private JButton createMinimalButton(String text) {
JButton btn = new JButton(text);
btn.setBorder(BorderFactory.createLineBorder(new Color(33, 33, 33), 1));
btn.setBackground(Color.WHITE);
btn.setForeground(new Color(33, 33, 33));
btn.setFocusPainted(false);
btn.setFont(new Font("Inter", Font.BOLD, 14));
btn.setCursor(new Cursor(Cursor.HAND_CURSOR));
btn.setPreferredSize(new Dimension(200, 45));
return btn;
}
public static void main(String[] args) {
new SingleLineBorderLogin();
}
}

Feature: Clean single bottom border for input fields

2. Double Line Border Login

import javax.swing.*;
import java.awt.*;
public class DoubleLineBorderLogin extends JFrame {
public DoubleLineBorderLogin() {
setTitle("Double Line Border Login");
setSize(380, 450);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel mainPanel = new JPanel(new GridBagLayout());
mainPanel.setBackground(new Color(250, 250, 250));
// Title
JLabel title = new JLabel("WELCOME");
title.setFont(new Font("Poppins", Font.BOLD, 28));
title.setForeground(new Color(40, 40, 40));
// Fields with double borders
JTextField username = createDoubleBorderField("Username");
JPasswordField password = createDoubleBorderPassword("Password");
// Double border button
JButton loginBtn = createDoubleBorderButton("LOGIN");
// Signup link
JLabel signup = new JLabel("Create account");
signup.setFont(new Font("Inter", Font.PLAIN, 12));
signup.setForeground(new Color(80, 80, 80));
signup.setCursor(new Cursor(Cursor.HAND_CURSOR));
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.insets = new Insets(10, 40, 10, 40);
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridy = 0; gbc.insets = new Insets(60, 40, 30, 40);
mainPanel.add(title, gbc);
gbc.gridy = 1;
mainPanel.add(username, gbc);
gbc.gridy = 2;
mainPanel.add(password, gbc);
gbc.gridy = 3; gbc.insets = new Insets(30, 40, 10, 40);
mainPanel.add(loginBtn, gbc);
gbc.gridy = 4; gbc.insets = new Insets(5, 40, 50, 40);
mainPanel.add(signup, gbc);
add(mainPanel);
setVisible(true);
}
private JTextField createDoubleBorderField(String placeholder) {
JTextField field = new JTextField(placeholder);
field.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createLineBorder(new Color(180, 180, 180), 1),
BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(100, 100, 100))
));
field.setFont(new Font("Inter", Font.PLAIN, 14));
field.setForeground(new Color(50, 50, 50));
return field;
}
private JPasswordField createDoubleBorderPassword(String placeholder) {
JPasswordField field = new JPasswordField(placeholder);
field.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createLineBorder(new Color(180, 180, 180), 1),
BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(100, 100, 100))
));
field.setFont(new Font("Inter", Font.PLAIN, 14));
field.setForeground(new Color(50, 50, 50));
field.setEchoChar('•');
return field;
}
private JButton createDoubleBorderButton(String text) {
JButton btn = new JButton(text);
btn.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createLineBorder(new Color(40, 40, 40), 2),
BorderFactory.createLineBorder(Color.WHITE, 2)
));
btn.setBackground(new Color(40, 40, 40));
btn.setForeground(Color.WHITE);
btn.setFocusPainted(false);
btn.setFont(new Font("Inter", Font.BOLD, 14));
return btn;
}
public static void main(String[] args) {
new DoubleLineBorderLogin();
}
}

Feature: Double border effect for emphasis

3. Dashed Border Login

import javax.swing.*;
import java.awt.*;
import javax.swing.border.Border;
import java.awt.geom.Line2D;
public class DashedBorderLogin extends JFrame {
public DashedBorderLogin() {
setTitle("Dashed Border Login");
setSize(380, 450);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel mainPanel = new JPanel(new GridBagLayout());
mainPanel.setBackground(new Color(245, 245, 245));
// Title with underline
JLabel title = new JLabel("MEMBER LOGIN");
title.setFont(new Font("Montserrat", Font.BOLD, 26));
title.setForeground(new Color(60, 60, 60));
// Dashed border fields
JTextField username = createDashedBorderField("Username");
JPasswordField password = createDashedBorderPassword("Password");
// Dashed border button
JButton loginBtn = createDashedBorderButton("SIGN IN");
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.insets = new Insets(10, 40, 10, 40);
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridy = 0; gbc.insets = new Insets(50, 40, 30, 40);
mainPanel.add(title, gbc);
gbc.gridy = 1;
mainPanel.add(username, gbc);
gbc.gridy = 2;
mainPanel.add(password, gbc);
gbc.gridy = 3; gbc.insets = new Insets(30, 40, 50, 40);
mainPanel.add(loginBtn, gbc);
add(mainPanel);
setVisible(true);
}
private JTextField createDashedBorderField(String placeholder) {
JTextField field = new JTextField(placeholder) {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(new Color(150, 150, 150));
float[] dash = {5.0f, 5.0f};
g2d.setStroke(new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, dash, 0.0f));
g2d.drawRect(0, 0, getWidth()-1, getHeight()-1);
}
};
field.setBorder(BorderFactory.createEmptyBorder(10, 15, 10, 15));
field.setOpaque(false);
field.setFont(new Font("Inter", Font.PLAIN, 14));
field.setForeground(new Color(60, 60, 60));
return field;
}
private JPasswordField createDashedBorderPassword(String placeholder) {
JPasswordField field = new JPasswordField(placeholder) {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(new Color(150, 150, 150));
float[] dash = {5.0f, 5.0f};
g2d.setStroke(new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, dash, 0.0f));
g2d.drawRect(0, 0, getWidth()-1, getHeight()-1);
}
};
field.setBorder(BorderFactory.createEmptyBorder(10, 15, 10, 15));
field.setOpaque(false);
field.setFont(new Font("Inter", Font.PLAIN, 14));
field.setForeground(new Color(60, 60, 60));
field.setEchoChar('•');
return field;
}
private JButton createDashedBorderButton(String text) {
JButton btn = new JButton(text) {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(new Color(60, 60, 60));
float[] dash = {5.0f, 3.0f};
g2d.setStroke(new BasicStroke(1.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, dash, 0.0f));
g2d.drawRect(1, 1, getWidth()-3, getHeight()-3);
}
};
btn.setBorder(BorderFactory.createEmptyBorder(12, 30, 12, 30));
btn.setContentAreaFilled(false);
btn.setFocusPainted(false);
btn.setForeground(new Color(60, 60, 60));
btn.setFont(new Font("Inter", Font.BOLD, 14));
return btn;
}
public static void main(String[] args) {
new DashedBorderLogin();
}
}

Feature: Dashed borders for a modern, sketch-like appearance

4. Dotted Border Login

import javax.swing.*;
import java.awt.*;
import javax.swing.border.Border;
public class DottedBorderLogin extends JFrame {
public DottedBorderLogin() {
setTitle("Dotted Border Login");
setSize(380, 450);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel mainPanel = new JPanel(new GridBagLayout());
mainPanel.setBackground(new Color(255, 255, 255));
// Header
JLabel header = new JLabel("✦ WELCOME BACK ✦");
header.setFont(new Font("Poppins", Font.BOLD, 20));
header.setForeground(new Color(70, 70, 70));
// Dotted border components
JTextField userField = createDottedField("Username");
JPasswordField passField = createDottedPassword("Password");
JButton loginBtn = createDottedButton("LOGIN");
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.insets = new Insets(10, 40, 10, 40);
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridy = 0; gbc.insets = new Insets(60, 40, 30, 40);
mainPanel.add(header, gbc);
gbc.gridy = 1;
mainPanel.add(userField, gbc);
gbc.gridy = 2;
mainPanel.add(passField, gbc);
gbc.gridy = 3; gbc.insets = new Insets(30, 40, 60, 40);
mainPanel.add(loginBtn, gbc);
add(mainPanel);
setVisible(true);
}
private JTextField createDottedField(String placeholder) {
JTextField field = new JTextField(placeholder) {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(new Color(120, 120, 140));
float[] dash = {1.0f, 3.0f};
g2d.setStroke(new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, dash, 0.0f));
g2d.drawRect(0, 0, getWidth()-1, getHeight()-1);
}
};
field.setBorder(BorderFactory.createEmptyBorder(12, 15, 12, 15));
field.setOpaque(false);
field.setFont(new Font("Inter", Font.PLAIN, 14));
return field;
}
private JPasswordField createDottedPassword(String placeholder) {
JPasswordField field = new JPasswordField(placeholder) {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(new Color(120, 120, 140));
float[] dash = {1.0f, 3.0f};
g2d.setStroke(new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, dash, 0.0f));
g2d.drawRect(0, 0, getWidth()-1, getHeight()-1);
}
};
field.setBorder(BorderFactory.createEmptyBorder(12, 15, 12, 15));
field.setOpaque(false);
field.setFont(new Font("Inter", Font.PLAIN, 14));
field.setEchoChar('•');
return field;
}
private JButton createDottedButton(String text) {
JButton btn = new JButton(text) {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(new Color(80, 80, 100));
float[] dash = {1.0f, 2.0f};
g2d.setStroke(new BasicStroke(1.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, dash, 0.0f));
g2d.drawRect(2, 2, getWidth()-5, getHeight()-5);
}
};
btn.setBorder(BorderFactory.createEmptyBorder(12, 30, 12, 30));
btn.setContentAreaFilled(false);
btn.setFocusPainted(false);
btn.setForeground(new Color(80, 80, 100));
btn.setFont(new Font("Inter", Font.BOLD, 14));
return btn;
}
public static void main(String[] args) {
new DottedBorderLogin();
}
}

Feature: Dotted borders for a delicate, airy feel

5. Rounded Border Login

import javax.swing.*;
import java.awt.*;
import javax.swing.border.LineBorder;
public class RoundedBorderLogin extends JFrame {
public RoundedBorderLogin() {
setTitle("Rounded Border Login");
setSize(380, 450);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel mainPanel = new JPanel(new GridBagLayout());
mainPanel.setBackground(new Color(248, 248, 252));
// Title
JLabel title = new JLabel("SIGN IN");
title.setFont(new Font("SF Pro Display", Font.BOLD, 32));
title.setForeground(new Color(44, 62, 80));
// Rounded border fields
JTextField username = createRoundedField("Username", 25);
JPasswordField password = createRoundedPassword("Password", 25);
// Rounded button
JButton loginBtn = createRoundedButton("Continue", 30);
// Link
JLabel signup = new JLabel("Don't have an account? Sign up");
signup.setFont(new Font("Inter", Font.PLAIN, 12));
signup.setForeground(new Color(52, 152, 219));
signup.setCursor(new Cursor(Cursor.HAND_CURSOR));
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.insets = new Insets(10, 40, 10, 40);
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridy = 0; gbc.insets = new Insets(50, 40, 30, 40);
mainPanel.add(title, gbc);
gbc.gridy = 1;
mainPanel.add(username, gbc);
gbc.gridy = 2;
mainPanel.add(password, gbc);
gbc.gridy = 3; gbc.insets = new Insets(30, 40, 10, 40);
mainPanel.add(loginBtn, gbc);
gbc.gridy = 4; gbc.insets = new Insets(5, 40, 40, 40);
mainPanel.add(signup, gbc);
add(mainPanel);
setVisible(true);
}
private JTextField createRoundedField(String placeholder, int radius) {
JTextField field = new JTextField(placeholder) {
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(getBackground());
g2d.fillRoundRect(0, 0, getWidth()-1, getHeight()-1, radius, radius);
g2d.setColor(new Color(180, 180, 190));
g2d.drawRoundRect(0, 0, getWidth()-1, getHeight()-1, radius, radius);
g2d.dispose();
super.paintComponent(g);
}
};
field.setBorder(BorderFactory.createEmptyBorder(12, 15, 12, 15));
field.setOpaque(false);
field.setBackground(Color.WHITE);
field.setFont(new Font("Inter", Font.PLAIN, 14));
field.setForeground(new Color(44, 62, 80));
return field;
}
private JPasswordField createRoundedPassword(String placeholder, int radius) {
JPasswordField field = new JPasswordField(placeholder) {
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(getBackground());
g2d.fillRoundRect(0, 0, getWidth()-1, getHeight()-1, radius, radius);
g2d.setColor(new Color(180, 180, 190));
g2d.drawRoundRect(0, 0, getWidth()-1, getHeight()-1, radius, radius);
g2d.dispose();
super.paintComponent(g);
}
};
field.setBorder(BorderFactory.createEmptyBorder(12, 15, 12, 15));
field.setOpaque(false);
field.setBackground(Color.WHITE);
field.setFont(new Font("Inter", Font.PLAIN, 14));
field.setForeground(new Color(44, 62, 80));
field.setEchoChar('•');
return field;
}
private JButton createRoundedButton(String text, int radius) {
JButton btn = new JButton(text) {
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
if (getModel().isPressed()) {
g2d.setColor(new Color(41, 128, 185));
} else {
g2d.setColor(new Color(52, 152, 219));
}
g2d.fillRoundRect(0, 0, getWidth(), getHeight(), radius, radius);
g2d.dispose();
super.paintComponent(g);
}
};
btn.setBorder(BorderFactory.createEmptyBorder(12, 30, 12, 30));
btn.setContentAreaFilled(false);
btn.setFocusPainted(false);
btn.setForeground(Color.WHITE);
btn.setFont(new Font("Inter", Font.BOLD, 14));
return btn;
}
public static void main(String[] args) {
new RoundedBorderLogin();
}
}

Feature: Soft rounded corners for a friendly appearance

6. Thin Border Login

import javax.swing.*;
import java.awt.*;
public class ThinBorderLogin extends JFrame {
public ThinBorderLogin() {
setTitle("Thin Border Login");
setSize(380, 450);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel mainPanel = new JPanel(new GridBagLayout());
mainPanel.setBackground(new Color(250, 250, 250));
// Title
JLabel title = new JLabel("LOGIN");
title.setFont(new Font("Helvetica Neue", Font.LIGHT, 36));
title.setForeground(new Color(50, 50, 50));
// Fields with ultra-thin borders
JTextField username = createThinBorderField("Username");
JPasswordField password = createThinBorderPassword("Password");
// Thin border button
JButton loginBtn = createThinBorderButton("LOGIN");
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.insets = new Insets(10, 40, 10, 40);
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridy = 0; gbc.insets = new Insets(60, 40, 30, 40);
mainPanel.add(title, gbc);
gbc.gridy = 1;
mainPanel.add(username, gbc);
gbc.gridy = 2;
mainPanel.add(password, gbc);
gbc.gridy = 3; gbc.insets = new Insets(30, 40, 60, 40);
mainPanel.add(loginBtn, gbc);
add(mainPanel);
setVisible(true);
}
private JTextField createThinBorderField(String placeholder) {
JTextField field = new JTextField(placeholder);
field.setBorder(BorderFactory.createLineBorder(new Color(200, 200, 200), 1));
field.setFont(new Font("Helvetica Neue", Font.PLAIN, 14));
field.setForeground(new Color(80, 80, 80));
field.setBackground(Color.WHITE);
return field;
}
private JPasswordField createThinBorderPassword(String placeholder) {
JPasswordField field = new JPasswordField(placeholder);
field.setBorder(BorderFactory.createLineBorder(new Color(200, 200, 200), 1));
field.setFont(new Font("Helvetica Neue", Font.PLAIN, 14));
field.setForeground(new Color(80, 80, 80));
field.setBackground(Color.WHITE);
field.setEchoChar('•');
return field;
}
private JButton createThinBorderButton(String text) {
JButton btn = new JButton(text);
btn.setBorder(BorderFactory.createLineBorder(new Color(50, 50, 50), 1));
btn.setBackground(Color.WHITE);
btn.setForeground(new Color(50, 50, 50));
btn.setFocusPainted(false);
btn.setFont(new Font("Helvetica Neue", Font.BOLD, 14));
btn.setCursor(new Cursor(Cursor.HAND_CURSOR));
return btn;
}
public static void main(String[] args) {
new ThinBorderLogin();
}
}

Feature: Extremely thin 1px borders for minimalism

7. Thick Border Login

import javax.swing.*;
import java.awt.*;
public class ThickBorderLogin extends JFrame {
public ThickBorderLogin() {
setTitle("Thick Border Login");
setSize(380, 450);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel mainPanel = new JPanel(new GridBagLayout());
mainPanel.setBackground(new Color(240, 240, 240));
// Title
JLabel title = new JLabel("AUTHENTICATE");
title.setFont(new Font("Roboto", Font.BOLD, 24));
title.setForeground(new Color(30, 30, 30));
// Fields with thick borders
JTextField username = createThickBorderField("Username", 3);
JPasswordField password = createThickBorderPassword("Password", 3);
// Thick border button
JButton loginBtn = createThickBorderButton("ENTER", 3);
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.insets = new Insets(10, 40, 10, 40);
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridy = 0; gbc.insets = new Insets(50, 40, 30, 40);
mainPanel.add(title, gbc);
gbc.gridy = 1;
mainPanel.add(username, gbc);
gbc.gridy = 2;
mainPanel.add(password, gbc);
gbc.gridy = 3; gbc.insets = new Insets(30, 40, 50, 40);
mainPanel.add(loginBtn, gbc);
add(mainPanel);
setVisible(true);
}
private JTextField createThickBorderField(String placeholder, int thickness) {
JTextField field = new JTextField(placeholder);
field.setBorder(BorderFactory.createLineBorder(new Color(100, 100, 100), thickness));
field.setFont(new Font("Roboto", Font.PLAIN, 14));
field.setForeground(new Color(50, 50, 50));
field.setBackground(Color.WHITE);
return field;
}
private JPasswordField createThickBorderPassword(String placeholder, int thickness) {
JPasswordField field = new JPasswordField(placeholder);
field.setBorder(BorderFactory.createLineBorder(new Color(100, 100, 100), thickness));
field.setFont(new Font("Roboto", Font.PLAIN, 14));
field.setForeground(new Color(50, 50, 50));
field.setBackground(Color.WHITE);
field.setEchoChar('•');
return field;
}
private JButton createThickBorderButton(String text, int thickness) {
JButton btn = new JButton(text);
btn.setBorder(BorderFactory.createLineBorder(new Color(30, 30, 30), thickness));
btn.setBackground(Color.WHITE);
btn.setForeground(new Color(30, 30, 30));
btn.setFocusPainted(false);
btn.setFont(new Font("Roboto", Font.BOLD, 14));
return btn;
}
public static void main(String[] args) {
new ThickBorderLogin();
}
}

Feature: Bold thick borders for emphasis

8. Gradient Border Login

import javax.swing.*;
import java.awt.*;
import java.awt.geom.RoundRectangle2D;
public class GradientBorderLogin extends JFrame {
public GradientBorderLogin() {
setTitle("Gradient Border Login");
setSize(380, 450);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel mainPanel = new JPanel(new GridBagLayout());
mainPanel.setBackground(Color.WHITE);
// Title
JLabel title = new JLabel("GRADIENT");
title.setFont(new Font("Poppins", Font.BOLD, 32));
title.setForeground(new Color(60, 60, 60));
// Gradient border fields
JTextField username = createGradientBorderField("Username");
JPasswordField password = createGradientBorderPassword("Password");
// Gradient border button
JButton loginBtn = createGradientBorderButton("SIGN IN");
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.insets = new Insets(10, 40, 10, 40);
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridy = 0; gbc.insets = new Insets(50, 40, 30, 40);
mainPanel.add(title, gbc);
gbc.gridy = 1;
mainPanel.add(username, gbc);
gbc.gridy = 2;
mainPanel.add(password, gbc);
gbc.gridy = 3; gbc.insets = new Insets(30, 40, 50, 40);
mainPanel.add(loginBtn, gbc);
add(mainPanel);
setVisible(true);
}
private JTextField createGradientBorderField(String placeholder) {
JTextField field = new JTextField(placeholder) {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
GradientPaint gp = new GradientPaint(0, 0, new Color(100, 150, 255),
getWidth(), 0, new Color(150, 100, 255));
g2d.setPaint(gp);
g2d.setStroke(new BasicStroke(2));
g2d.drawRoundRect(1, 1, getWidth()-3, getHeight()-3, 10, 10);
}
};
field.setBorder(BorderFactory.createEmptyBorder(12, 15, 12, 15));
field.setOpaque(false);
field.setFont(new Font("Inter", Font.PLAIN, 14));
field.setForeground(new Color(60, 60, 60));
return field;
}
private JPasswordField createGradientBorderPassword(String placeholder) {
JPasswordField field = new JPasswordField(placeholder) {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
GradientPaint gp = new GradientPaint(0, 0, new Color(100, 150, 255),
getWidth(), 0, new Color(150, 100, 255));
g2d.setPaint(gp);
g2d.setStroke(new BasicStroke(2));
g2d.drawRoundRect(1, 1, getWidth()-3, getHeight()-3, 10, 10);
}
};
field.setBorder(BorderFactory.createEmptyBorder(12, 15, 12, 15));
field.setOpaque(false);
field.setFont(new Font("Inter", Font.PLAIN, 14));
field.setForeground(new Color(60, 60, 60));
field.setEchoChar('•');
return field;
}
private JButton createGradientBorderButton(String text) {
JButton btn = new JButton(text) {
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
GradientPaint gp = new GradientPaint(0, 0, new Color(100, 150, 255),
0, getHeight(), new Color(150, 100, 255));
g2d.setPaint(gp);
g2d.fillRoundRect(0, 0, getWidth(), getHeight(), 20, 20);
g2d.dispose();
super.paintComponent(g);
}
};
btn.setBorder(BorderFactory.createEmptyBorder(12, 30, 12, 30));
btn.setContentAreaFilled(false);
btn.setFocusPainted(false);
btn.setForeground(Color.WHITE);
btn.setFont(new Font("Inter", Font.BOLD, 14));
return btn;
}
public static void main(String[] args) {
new GradientBorderLogin();
}
}

Feature: Color gradient borders for visual interest

9. Colored Border Login

import javax.swing.*;
import java.awt.*;
public class ColoredBorderLogin extends JFrame {
public ColoredBorderLogin() {
setTitle("Colored Border Login");
setSize(380, 450);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel mainPanel = new JPanel(new GridBagLayout());
mainPanel.setBackground(new Color(250, 250, 250));
// Title with color accent
JLabel title = new JLabel("COLORFUL");
title.setFont(new Font("Montserrat", Font.BOLD, 30));
title.setForeground(new Color(41, 128, 185));
// Colored border fields
JTextField username = createColoredBorderField("Username", new Color(52, 152, 219));
JPasswordField password = createColoredBorderPassword("Password", new Color(155, 89, 182));
// Colored button
JButton loginBtn = createColoredButton("LOGIN", new Color(46, 204, 113));
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.insets = new Insets(10, 40, 10, 40);
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridy = 0; gbc.insets = new Insets(50, 40, 30, 40);
mainPanel.add(title, gbc);
gbc.gridy = 1;
mainPanel.add(username, gbc);
gbc.gridy = 2;
mainPanel.add(password, gbc);
gbc.gridy = 3; gbc.insets = new Insets(30, 40, 50, 40);
mainPanel.add(loginBtn, gbc);
add(mainPanel);
setVisible(true);
}
private JTextField createColoredBorderField(String placeholder, Color borderColor) {
JTextField field = new JTextField(placeholder);
field.setBorder(BorderFactory.createLineBorder(borderColor, 2));
field.setFont(new Font("Inter", Font.PLAIN, 14));
field.setForeground(new Color(60, 60, 60));
field.setBackground(Color.WHITE);
return field;
}
private JPasswordField createColoredBorderPassword(String placeholder, Color borderColor) {
JPasswordField field = new JPasswordField(placeholder);
field.setBorder(BorderFactory.createLineBorder(borderColor, 2));
field.setFont(new Font("Inter", Font.PLAIN, 14));
field.setForeground(new Color(60, 60, 60));
field.setBackground(Color.WHITE);
field.setEchoChar('•');
return field;
}
private JButton createColoredButton(String text, Color bgColor) {
JButton btn = new JButton(text);
btn.setBorder(BorderFactory.createEmptyBorder(12, 30, 12, 30));
btn.setBackground(bgColor);
btn.setForeground(Color.WHITE);
btn.setFocusPainted(false);
btn.setFont(new Font("Inter", Font.BOLD, 14));
return btn;
}
public static void main(String[] args) {
new ColoredBorderLogin();
}
}

Feature: Distinct colors for different elements

10. No Border Minimal Login

import javax.swing.*;
import java.awt.*;
public class NoBorderMinimalLogin extends JFrame {
public NoBorderMinimalLogin() {
setTitle("Borderless Minimal Login");
setSize(380, 450);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel mainPanel = new JPanel(new GridBagLayout());
mainPanel.setBackground(Color.WHITE);
// Title
JLabel title = new JLabel("welcome.");
title.setFont(new Font("Cormorant Garamond", Font.BOLD, 48));
title.setForeground(new Color(40, 40, 40));
// Borderless fields (only placeholder)
JTextField username = createBorderlessField("username");
JPasswordField password = createBorderlessPassword("password");
// Minimal button
JButton loginBtn = createBorderlessButton("continue");
// Subtle separator
JSeparator separator = new JSeparator();
separator.setForeground(new Color(200, 200, 200));
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.insets = new Insets(10, 40, 10, 40);
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridy = 0; gbc.insets = new Insets(60, 40, 20, 40);
mainPanel.add(title, gbc);
gbc.gridy = 1;
mainPanel.add(username, gbc);
gbc.gridy = 2;
mainPanel.add(password, gbc);
gbc.gridy = 3; gbc.insets = new Insets(20, 40, 20, 40);
mainPanel.add(separator, gbc);
gbc.gridy = 4; gbc.insets = new Insets(5, 40, 60, 40);
mainPanel.add(loginBtn, gbc);
add(mainPanel);
setVisible(true);
}
private JTextField createBorderlessField(String placeholder) {
JTextField field = new JTextField(placeholder);
field.setBorder(BorderFactory.createEmptyBorder(10, 5, 10, 5));
field.setFont(new Font("Inter", Font.PLAIN, 16));
field.setForeground(new Color(100, 100, 100));
field.setBackground(Color.WHITE);
return field;
}
private JPasswordField createBorderlessPassword(String placeholder) {
JPasswordField field = new JPasswordField(placeholder);
field.setBorder(BorderFactory.createEmptyBorder(10, 5, 10, 5));
field.setFont(new Font("Inter", Font.PLAIN, 16));
field.setForeground(new Color(100, 100, 100));
field.setBackground(Color.WHITE);
field.setEchoChar('•');
return field;
}
private JButton createBorderlessButton(String text) {
JButton btn = new JButton(text);
btn.setBorder(BorderFactory.createEmptyBorder(10, 20, 10, 20));
btn.setBackground(Color.WHITE);
btn.setForeground(new Color(100, 100, 100));
btn.setFocusPainted(false);
btn.setFont(new Font("Inter", Font.PLAIN, 14));
btn.setCursor(new Cursor(Cursor.HAND_CURSOR));
return btn;
}
public static void main(String[] args) {
new NoBorderMinimalLogin();
}
}

Feature: Completely borderless, relying on whitespace


CONTINUATION FORMS 11-100

Category 1: Border Style Variations (11-20)

  1. Shadow Border Login - Borders with subtle shadows
  2. Embossed Border Login - Raised border effect
  3. Engraved Border Login - Inset border effect
  4. Grooved Border Login - Double line with groove effect
  5. Ridged Border Login - Double line with ridge effect
  6. Bevel Border Login - Beveled edge borders
  7. Etched Border Login - Etched appearance
  8. Matte Border Login - Non-reflective borders
  9. Glossy Border Login - Shiny border effect
  10. Metallic Border Login - Metal-like borders

Category 2: Border Position Variations (21-30)

  1. Top Border Only Login - Border only on top
  2. Bottom Border Only Login - Border only on bottom
  3. Left Border Only Login - Border only on left
  4. Right Border Only Login - Border only on right
  5. Top-Bottom Border Login - Borders on top and bottom
  6. Left-Right Border Login - Borders on left and right
  7. Diagonal Border Login - Diagonal line borders
  8. Cross Border Login - Crossing line borders
  9. X Border Login - X-shaped borders
  10. Z Border Login - Zigzag borders

Category 3: Border Thickness Variations (31-40)

  1. Hairline Border Login - Ultra-thin 0.5px border
  2. Fine Border Login - 1px elegant border
  3. Medium Border Login - 2px balanced border
  4. Bold Border Login - 3px strong border
  5. Extra Bold Login - 4px prominent border
  6. Variable Border Login - Different thickness on each side
  7. Tapered Border Login - Thickness varies gradually
  8. Double Thickness Login - Two borders with different thickness
  9. Triple Border Login - Three concentric borders
  10. Multi-layer Border Login - Multiple border layers

Category 4: Border Color Variations (41-50)

  1. Monochrome Border Login - Black and white only
  2. Grayscale Border Login - Shades of gray
  3. Pastel Border Login - Soft pastel colors
  4. Neon Border Login - Bright neon borders
  5. Earth Tone Border Login - Natural earthy colors
  6. Ocean Blue Login - Blue-themed borders
  7. Forest Green Login - Green-themed borders
  8. Sunset Orange Login - Orange/red gradients
  9. Royal Purple Login - Purple accents
  10. Rainbow Border Login - Multi-color borders

Category 5: Border Shape Variations (51-60)

  1. Square Border Login - Sharp square corners
  2. Slightly Rounded Login - 5px radius corners
  3. Pill Shape Login - Extremely rounded (pill shape)
  4. Oval Border Login - Oval-shaped fields
  5. Circle Border Login - Circular elements
  6. Hexagon Border Login - Hexagonal borders
  7. Octagon Border Login - Octagonal borders
  8. Wave Border Login - Wavy border lines
  9. Scalloped Border Login - Scalloped edges
  10. Notched Border Login - Notched corners

Category 6: Border Pattern Variations (61-70)

  1. Diamond Pattern Login - Diamond- patterned borders
  2. Checker Border Login - Checkerboard pattern
  3. Striped Border Login - Striped borders
  4. Polka Dot Border Login - Dot patterns
  5. Herringbone Border Login - Herringbone pattern
  6. Zigzag Border Login - Zigzag lines
  7. Curved Border Login - Curved border lines
  8. Angled Border Login - Angled corners
  9. Asymmetric Border Login - Asymmetric designs
  10. Organic Border Login - Free-form shapes

Category 7: Interactive Border Variations (71-80)

  1. Hover Glow Border Login - Borders glow on hover
  2. Color Change Border Login - Borders change color on interaction
  3. Animated Border Login - Animated border effects
  4. Pulsing Border Login - Borders pulse gently
  5. Expanding Border Login - Borders expand on focus
  6. Shrinking Border Login - Borders contract on blur
  7. Rotating Border Login - Border patterns rotate
  8. Flicker Border Login - Subtle flicker effect
  9. Wave Border Animation Login - Waving border animation
  10. Particle Border Login - Particle effects around borders

Category 8: Minimalist Theme Variations (81-90)

  1. Scandinavian Minimal Login - Clean, light, airy
  2. Japanese Zen Login - Balanced, harmonious
  3. Swiss Design Login - Grid-based, precise
  4. Bauhaus Login - Geometric, primary colors
  5. Art Deco Login - Stylish, geometric patterns
  6. Mid-Century Login - Retro modern
  7. Contemporary Login - Current trends
  8. Futuristic Login - Forward-looking design
  9. Retro Minimal Login - Vintage minimalism
  10. Brutalist Minimal Login - Raw, unpolished

Category 9: Special Effects (91-100)

  1. Glass Border Login - Transparent glass-like borders
  2. Frosted Border Login - Frosted glass effect
  3. Chrome Border Login - Chrome finish
  4. Gold Border Login - Gold metallic
  5. Silver Border Login - Silver metallic
  6. Copper Border Login - Copper finish
  7. Bronze Border Login - Bronze metallic
  8. Pearlescent Login - Pearl-like sheen
  9. Iridescent Login - Color-shifting
  10. Holographic Border Login - Holographic effect

Each form maintains the core principles of minimal border design:

  • Clean, uncluttered layouts
  • Strategic use of whitespace
  • Subtle borders that guide without overwhelming
  • Focus on typography and content
  • Functional, purpose-driven design

The key to minimal border design is using borders sparingly and purposefully, allowing the content to breathe while providing just enough structure for usability.

Leave a Reply

Your email address will not be published. Required fields are marked *


Macro Nepal Helper