JFrame - potatoscript/JavaSwing GitHub Wiki
A JFrame is the main window of a Java Swing application. It acts as a container for holding UI components like buttons, text fields, and panels.
✔️ Creates a resizable window
✔️ Supports menus, toolbars, and panels
✔️ Handles user interactions (mouse clicks, keyboard input, etc.)
import javax.swing.JFrame;
public class BasicJFrame {
public static void main(String[] args) {
// Create JFrame instance
JFrame frame = new JFrame("Basic JFrame");
// Set window size (width x height)
frame.setSize(500, 400);
// Specify what happens when the window is closed
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Make the frame visible
frame.setVisible(true);
}
}
</code></pre>
<h3>Explanation</h3>
<ul>
<li><code inline="">JFrame frame = new JFrame("Basic JFrame");</code> → Creates a window with a title.</li>
<li><code inline="">frame.setSize(500, 400);</code> → Defines the width and height of the window.</li>
<li><code inline="">frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</code> → Closes the application when the window is closed.</li>
<li><code inline="">frame.setVisible(true);</code> → Makes the window visible.</li>
</ul>
<hr>
<h2>3️⃣ JFrame Properties & Methods</h2>
Method | Description
-- | --
setTitle(String title) | Sets the title of the frame.
setSize(int width, int height) | Sets the width and height of the frame.
setDefaultCloseOperation(int operation) | Defines what happens when the user closes the window.
setVisible(boolean visible) | Shows or hides the frame.
setResizable(boolean resizable) | Enables or disables resizing of the window.
setLayout(LayoutManager layout) | Defines the layout manager for arranging components.
setLocation(int x, int y) | Sets the initial position of the window on the screen.
pack() | Adjusts the frame size based on its components.
dispose() | Closes and releases all resources used by the frame.
<hr>
<h2>4️⃣ Closing a JFrame Properly</h2>
<h3>1. <code inline="">EXIT_ON_CLOSE</code> (Recommended)</h3>
<p>Closes the application when the window is closed.</p>
<pre><code class="language-java">frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
</code></pre>
<h3>2. <code inline="">DISPOSE_ON_CLOSE</code> (For Multi-Window Apps)</h3>
<p>Closes the window but <strong>keeps the application running</strong>.</p>
<pre><code class="language-java">frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
</code></pre>
<h3>3. <code inline="">DO_NOTHING_ON_CLOSE</code> (For Confirmation Prompts)</h3>
<p>Prevents accidental closing and allows confirmation dialogs.</p>
<pre><code class="language-java">frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
</code></pre>
<hr>
<h2>5️⃣ Customizing JFrame</h2>
<h3>Example: Setting Window Location and Resizing</h3>
<pre><code class="language-java">import javax.swing.JFrame;
public class CustomJFrame {
public static void main(String[] args) {
JFrame frame = new JFrame("Custom JFrame");
// Set size
frame.setSize(600, 400);
// Set window location (x, y)
frame.setLocation(200, 150);
// Disable resizing
frame.setResizable(false);
// Close operation
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Make the frame visible
frame.setVisible(true);
}
}
</code></pre>
<h3>Explanation</h3>
<ul>
<li><code inline="">setLocation(200, 150);</code> → Positions the window <strong>200px from the left</strong> and <strong>150px from the top</strong>.</li>
<li><code inline="">setResizable(false);</code> → Prevents the user from resizing the window.</li>
</ul>
<hr>
<h2>6️⃣ Maximizing and Centering a JFrame</h2>
<h3>Maximizing the Window</h3>
<pre><code class="language-java">frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
</code></pre>
<h3>Centering the Window</h3>
<pre><code class="language-java">frame.setLocationRelativeTo(null);
</code></pre>
<hr>
<h2>7️⃣ Using <code inline="">pack()</code> to Auto-Resize Based on Components</h2>
<p>Instead of manually setting a fixed size, <code inline="">pack()</code> resizes the window <strong>based on its contents</strong>.</p>
<h3>Example: Using <code inline="">pack()</code></h3>
<pre><code class="language-java">import javax.swing.*;
public class PackExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Pack Example");
// Add a label (component)
JLabel label = new JLabel("Hello, Swing!");
frame.add(label);
// Adjust size automatically
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
</code></pre>
<h3>When to Use <code inline="">pack()</code>?</h3>
<ul>
<li>When you <strong>don't want to manually set a size</strong>.</li>
<li>When the frame should <strong>fit its components</strong> dynamically.</li>
</ul>
<hr>
<h2>8️⃣ JFrame with Multiple Components</h2>
<h3>Example: Adding a Button and Label</h3>
<pre><code class="language-java">import javax.swing.*;
public class MultiComponentJFrame {
public static void main(String[] args) {
JFrame frame = new JFrame("Multiple Components");
// Create a label
JLabel label = new JLabel("Welcome to Java Swing!");
// Create a button
JButton button = new JButton("Click Me");
// Add components to the frame
frame.add(label);
frame.add(button);
// Set layout and size
frame.setLayout(new java.awt.FlowLayout()); // Flow layout
frame.setSize(400, 200);
// Close operation
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Make it visible
frame.setVisible(true);
}
}
</code></pre>
<h3>Explanation</h3>
<ul>
<li><code inline="">JLabel</code> displays text.</li>
<li><code inline="">JButton</code> creates a clickable button.</li>
<li><code inline="">setLayout(new FlowLayout())</code> arranges components in a row.</li>
</ul>
<hr>
<h2>9️⃣ Summary</h2>
<p>✅ <code inline="">JFrame</code> is the main container for Swing applications.<br>
✅ Always set <code inline="">setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)</code> to ensure proper exit.<br>
✅ Use <code inline="">setLocationRelativeTo(null)</code> to center the window.<br>
✅ <code inline="">pack()</code> automatically resizes based on components.<br>
✅ Layout managers help in organizing UI elements.</p>
<p>🔹 <strong>Next Steps:</strong> Learn more about <a href="https://github.com/potatoscript/JavaSwing/wiki/JPanel-Layouts">JPanel and Layout Managers</a> to structure your GUI properly.</p>
<pre><code>
This tutorial covers **everything about `JFrame`**, from **basic creation** to **advanced configurations** like resizing, layout, and positioning. Let me know if you need more sections! 🚀
</code></pre></body></html><!--EndFragment-->
</body>
</html>Here’s the **"JFrame Basic"** section in Markdown format:
```markdown
# JFrame Basics
## 1️⃣ Introduction to `JFrame`
A **JFrame** is the main window of a Java Swing application. It acts as a container for holding UI components like buttons, text fields, and panels.
### Key Features:
✔️ **Creates a resizable window**
✔️ **Supports menus, toolbars, and panels**
✔️ **Handles user interactions (mouse clicks, keyboard input, etc.)**
---
## 2️⃣ Creating a Simple `JFrame` Window
### Example: Basic JFrame
```java
import javax.swing.JFrame;
public class BasicJFrame {
public static void main(String[] args) {
// Create JFrame instance
JFrame frame = new JFrame("Basic JFrame");
// Set window size (width x height)
frame.setSize(500, 400);
// Specify what happens when the window is closed
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Make the frame visible
frame.setVisible(true);
}
}
-
JFrame frame = new JFrame("Basic JFrame");
→ Creates a window with a title. -
frame.setSize(500, 400);
→ Defines the width and height of the window. -
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
→ Closes the application when the window is closed. -
frame.setVisible(true);
→ Makes the window visible.
Method | Description |
---|---|
setTitle(String title) |
Sets the title of the frame. |
setSize(int width, int height) |
Sets the width and height of the frame. |
setDefaultCloseOperation(int operation) |
Defines what happens when the user closes the window. |
setVisible(boolean visible) |
Shows or hides the frame. |
setResizable(boolean resizable) |
Enables or disables resizing of the window. |
setLayout(LayoutManager layout) |
Defines the layout manager for arranging components. |
setLocation(int x, int y) |
Sets the initial position of the window on the screen. |
pack() |
Adjusts the frame size based on its components. |
dispose() |
Closes and releases all resources used by the frame. |
Closes the application when the window is closed.
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Closes the window but keeps the application running.
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
Prevents accidental closing and allows confirmation dialogs.
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
import javax.swing.JFrame;
public class CustomJFrame {
public static void main(String[] args) {
JFrame frame = new JFrame("Custom JFrame");
// Set size
frame.setSize(600, 400);
// Set window location (x, y)
frame.setLocation(200, 150);
// Disable resizing
frame.setResizable(false);
// Close operation
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Make the frame visible
frame.setVisible(true);
}
}
-
setLocation(200, 150);
→ Positions the window 200px from the left and 150px from the top. -
setResizable(false);
→ Prevents the user from resizing the window.
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setLocationRelativeTo(null);
Instead of manually setting a fixed size, pack()
resizes the window based on its contents.
import javax.swing.*;
public class PackExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Pack Example");
// Add a label (component)
JLabel label = new JLabel("Hello, Swing!");
frame.add(label);
// Adjust size automatically
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
- When you don't want to manually set a size.
- When the frame should fit its components dynamically.
import javax.swing.*;
public class MultiComponentJFrame {
public static void main(String[] args) {
JFrame frame = new JFrame("Multiple Components");
// Create a label
JLabel label = new JLabel("Welcome to Java Swing!");
// Create a button
JButton button = new JButton("Click Me");
// Add components to the frame
frame.add(label);
frame.add(button);
// Set layout and size
frame.setLayout(new java.awt.FlowLayout()); // Flow layout
frame.setSize(400, 200);
// Close operation
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Make it visible
frame.setVisible(true);
}
}
-
JLabel
displays text. -
JButton
creates a clickable button. -
setLayout(new FlowLayout())
arranges components in a row.
✅ JFrame
is the main container for Swing applications.
✅ Always set setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
to ensure proper exit.
✅ Use setLocationRelativeTo(null)
to center the window.
✅ pack()
automatically resizes based on components.
✅ Layout managers help in organizing UI elements.