Creating Custom Windows with Java Swing JFrame

Setting Up a Java Swing Project

To begin developing with Java Swing, create a new project in your IDE:

  1. File → New → Project
  2. Enter project name and location
  3. Select appropriate language, build system, and JDK version

Basic JFrame Window Implementation

The following example demonstrates creating a simple window thatt fills the entire screen:

import javax.swing.*;
import java.awt.*;

public class WindowCreator {
    public static void main(String[] args) {
        JFrame applicationWindow = new JFrame();
        DisplaySize screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        applicationWindow.setBounds(0, 0, screenSize.width, screenSize.height);
        applicationWindow.setExtendedState(JFrame.MAXIMIZED_BOTH);
        applicationWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        applicationWindow.setVisible(true);
    }
}

Configuring a Runnable JAR

To package your application as a executable JAR file:

  1. File → Project Structure...
  2. Artifacts → + → Jar → From modules with dependencies...
  3. Select the main class as the antry point
  4. Add + → Directory Content → out to configure output directory
  5. Build: Menu Build → Build Artifacts...

The executable JAR will be generated in the out directory after successful build.

Creating Borderless Windows

There are two primary approaches to create windows without decorations:

Method 1: Using setUndecorated()

import javax.swing.*;
import java.awt.*;

public class UndecoratedWindow extends JFrame {
    public static void main(String[] args) {
        UndecoratedWindow frame = new UndecoratedWindow();
        DisplayToolkit toolkit = Toolkit.getDefaultToolkit();
        ScreenDimension screenDimension = toolkit.getScreenSize();
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        frame.setBounds(0, 0, screenDimension.width, screenDimension.height);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setUndecorated(true);
        frame.setVisible(true);
    }
}

Note: The setUndecorated() method must be called before setVisible().

Method 2: Using Full-Screen Mode

import javax.swing.*;
import java.awt.*;

public class FullScreenWindow extends JFrame {
    public static void main(String[] args) {
        FullScreenWindow frame = new FullScreenWindow();
        GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment()
                .getDefaultScreenDevice();
        device.setFullScreenWindow(frame);
    }
}

Tags: java swing JFrame gui Windowing

Posted on Sat, 20 Jun 2026 17:47:05 +0000 by vbracknell