JFrame Basics - potatoscript/JavaSwing GitHub Wiki
🖥️ JFrame Basics in Java Swing 🎨
🎯 What is JFrame?
JFrame is the main window for Java Swing applications. It provides the basic framework for adding GUI components such as buttons, labels, text fields, and other elements.
✅ Key Features:
- 🖼️ Window Creation: Main container where GUI components are added.
- ❌ Close Operations: Handles application closing when the window is closed.
- 🎨 Customizable Layouts: Supports layout managers to organize GUI components.
- 🔥 Resizable & Draggable: Provides window resizing and dragging capabilities.
📚 Step 1: Creating a Basic JFrame
📝 Basic Syntax
import javax.swing.JFrame;
public class MyFrame {
    public static void main(String[] args) {
        // Create JFrame
        JFrame frame = new JFrame("My First JFrame");
        // Set frame size
        frame.setSize(400, 300);
        // Set default close operation
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // Make the frame visible
        frame.setVisible(true);
    }
}
🎨 Explanation
✅ JFrame frame = new JFrame("My First JFrame");
- Creates a new JFramewith the title"My First JFrame".
✅ frame.setSize(400, 300);
- Sets the width to 400 pixels and height to 300 pixels.
✅ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- Closes the application when the window is closed.
- Options available:
- JFrame.EXIT_ON_CLOSE– Exit the application.
- JFrame.HIDE_ON_CLOSE– Hide the window but keep the application running.
- JFrame.DISPOSE_ON_CLOSE– Close the window but release only the resources of that frame.
 
✅ frame.setVisible(true);
- Displays the window on the screen.
👩🎨 Output:
+------------------------+
|                        |
|  My First JFrame        |
|                        |
+------------------------+
🎨 Step 2: JFrame with Basic Components
📝 Adding JLabel to JFrame
import javax.swing.*;
public class MyFrame {
    public static void main(String[] args) {
        // Create JFrame
        JFrame frame = new JFrame("JFrame with Label");
        // Create JLabel
        JLabel label = new JLabel("🎉 Welcome to Swing!", SwingConstants.CENTER);
        // Add label to frame
        frame.add(label);
        // Set frame size and behavior
        frame.setSize(400, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}
🎨 Explanation
✅ JLabel label = new JLabel("🎉 Welcome to Swing!", SwingConstants.CENTER);
- Creates a label with the text "🎉 Welcome to Swing!"and centers it horizontally.
✅ frame.add(label);
- Adds the label to the frame.
✅ frame.setSize(400, 200);
- Sets the window size to 400x200 pixels.
👩🎨 Output:
+--------------------------------+
|                                |
|    🎉 Welcome to Swing!        |
|                                |
+--------------------------------+
🧩 Step 3: JFrame Properties and Methods
📝 Common JFrame Methods
| Method | Description | Example Code | 
|---|---|---|
| setSize(int width, int height) | Sets the frame size in pixels. | frame.setSize(500, 300); | 
| setTitle(String title) | Sets the title of the frame. | frame.setTitle("My Frame"); | 
| setVisible(boolean b) | Makes the frame visible or hidden. | frame.setVisible(true); | 
| setDefaultCloseOperation(int operation) | Sets what happens when the window closes. | frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | 
| setResizable(boolean b) | Enables/disables frame resizing. | frame.setResizable(false); | 
| setLocation(int x, int y) | Sets frame position on the screen. | frame.setLocation(200, 100); | 
| setLocationRelativeTo(null) | Centers the frame on the screen. | frame.setLocationRelativeTo(null); | 
| pack() | Automatically sizes the frame to fit components. | frame.pack(); | 
| dispose() | Closes the frame and releases resources. | frame.dispose(); | 
📦 Step 4: Adding More Swing Components
🔥 Example: Adding Multiple Components to JFrame
import javax.swing.*;
public class MyFrame {
    public static void main(String[] args) {
        // Create JFrame
        JFrame frame = new JFrame("Multiple Components Example");
        // Create JLabel
        JLabel label = new JLabel("Enter your name:");
        // Create JTextField
        JTextField textField = new JTextField(20);
        // Create JButton
        JButton button = new JButton("Submit");
        // Set layout
        frame.setLayout(new java.awt.FlowLayout());
        // Add components to frame
        frame.add(label);
        frame.add(textField);
        frame.add(button);
        // Set frame properties
        frame.setSize(300, 150);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}
🎨 Explanation
✅ JLabel label = new JLabel("Enter your name:");
- Displays the text "Enter your name:".
✅ JTextField textField = new JTextField(20);
- Creates a text field with a width of 20 columns.
✅ JButton button = new JButton("Submit");
- Creates a button with the text "Submit".
✅ frame.setLayout(new java.awt.FlowLayout());
- Sets a simple layout that arranges components in a row.
✅ frame.add(label);
- Adds components to the frame.
👩🎨 Output:
+--------------------------------+
| Enter your name:  ___________  |
|                                |
|         [Submit]               |
+--------------------------------+
🎮 Step 5: JFrame Layout Managers
🎛️ What is a Layout Manager?
A Layout Manager controls the arrangement and positioning of components within a JFrame.
| Layout Manager | Description | Usage Example | 
|---|---|---|
| FlowLayout | Arranges components in a row. | frame.setLayout(new FlowLayout()); | 
| BorderLayout | Divides the frame into 5 regions. | frame.setLayout(new BorderLayout()); | 
| GridLayout | Arranges components in a grid. | frame.setLayout(new GridLayout(2, 2)); | 
| BoxLayout | Arranges components vertically/horizontally. | frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS)); | 
| GridBagLayout | Advanced layout for complex GUIs. | frame.setLayout(new GridBagLayout()); | 
🎨 Example: Using BorderLayout
import javax.swing.*;
import java.awt.*;
public class BorderLayoutExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("BorderLayout Example");
        // Create buttons
        JButton button1 = new JButton("NORTH");
        JButton button2 = new JButton("SOUTH");
        JButton button3 = new JButton("EAST");
        JButton button4 = new JButton("WEST");
        JButton button5 = new JButton("CENTER");
        // Set BorderLayout
        frame.setLayout(new BorderLayout());
        // Add buttons to regions
        frame.add(button1, BorderLayout.NORTH);
        frame.add(button2, BorderLayout.SOUTH);
        frame.add(button3, BorderLayout.EAST);
        frame.add(button4, BorderLayout.WEST);
        frame.add(button5, BorderLayout.CENTER);
        // Set frame properties
        frame.setSize(400, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}
🎨 Output:
+--------------------------+
|         NORTH             |
+------+------------+-------+
| WEST |   CENTER    | EAST  |
+------+------------+-------+
|         SOUTH             |
+--------------------------+
🚀 Step 6: Handling Window Events in JFrame
📝 Handling Window Close Events
import javax.swing.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class WindowEventExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Window Event Example");
        // Add Window Listener
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.out.println("Window is closing!");
                System.exit(0);
            }
        });
        frame.setSize(400, 200);
        frame.setVisible(true);
    }
}
👩🎨 Explanation
- addWindowListener(new WindowAdapter() { ... })– Listens for window events.
- windowClosing()– Called when the window is about to close.
🎁 Bonus: Center JFrame on Screen
To center a JFrame on the screen:
frame.setLocationRelativeTo(null);
✅ Add this line before frame.setVisible(true);.