import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.HeadlessException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class SimpleSwingApp {

    public SimpleSwingApp() {
        try {
            final JFrame frame = new JFrame("SimpleSwingApp");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLayout(new BorderLayout());

            JPanel swingPanel = new JPanel();
            swingPanel.setLayout(new FlowLayout());
            frame.getContentPane().add(swingPanel, BorderLayout.CENTER);

            JButton swingButton = new JButton("Click me");
            swingButton.addActionListener(e -> System.err.println("Hi"));

            swingPanel.add(swingButton);

            // show frame
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
            System.err.println("Window showing");
        } catch (HeadlessException ex) {
            System.err.println("Got expected exception: " + ex);
            System.err.println("Running in Headless mode");
            System.exit(1);
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new SimpleSwingApp());
    }
}
