This post has nothing to do with poker. I often need to test a specific aspect of Java’s Swing GUI toolkit to reproduce a problem. In order to help me and others avoid having to rewrite boiler-plate code to make the smallest possible reproduction case, I’m posting the basic code I use here. Consider it an easily-found memo to myself: import javax.swing.*; import java.awt.*; public class SwingTestFrame { public static void main(String[] args) { createAndLaunchGui(); } private static void createAndLaunchGui() { // UIManager.setLookAndFeel throws “nothing we can do about it” style exceptions. Best thing to do is // to wrap as an unchecked exception try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { throw new RuntimeException(e); } // using invoke later avoids possible obscure phantom timing issues // as (almost) all GUI code should be run on the Event Dispatch Thread SwingUtilities.invokeLater(new Runnable() { public void run() { final JFrame frame = new JFrame(“Java Swing Test Frame”); // when the close window control is clicked, we want the app to exit frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // using a panel as a top level component to hold all other GUI controls is a flexible approach final JPanel panel = new JPanel(); addComponentsToPanel(panel); frame.getContentPane().add(panel); frame.setPreferredSize(new Dimension(600, 400)); // pack layouts the frame according to the current LayoutManager frame.pack(); // setLocationRelativeTo(null) centres the frame frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } // modify this to build your GUI private static void addComponentsToPanel(JPanel panel) { panel.add(new JLabel(“Hello cruel world”)); panel.add(new JButton(“Do Stuff”)); } } Once more without most comments: import javax.swing.*; import java.awt.*; public class SwingTestFrame { public static void main(String[] args) { createAndLaunchGui(); } private static void createAndLaunchGui() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { throw new RuntimeException(e); } SwingUtilities.invokeLater(new Runnable() { public void run() { final JFrame frame = new JFrame(“Java Swing Test Frame”); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JPanel panel = new JPanel(); addComponentsToPanel(panel); frame.getContentPane().add(panel); frame.setPreferredSize(new Dimension(600, 400)); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } // modify this to build your GUI private static void addComponentsToPanel(JPanel panel) { panel.add(new JLabel(“Hello cruel world”)); panel.add(new JButton(“Do Stuff”)); } }

The rest is here:
Java Swing Test Frame