/* * GUI application demonstration for exe4j */ import com.exe4j.Controller; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Hello extends JFrame { private Hello() { setSize(600, 400); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); setLocation((screenSize.width - 600) / 2, (screenSize.height - 400) / 2); setTitle("Hello World GUI"); JMenuBar menuBar = new JMenuBar(); JMenu menu = new JMenu("File"); JMenuItem menuItem = new JMenuItem("Exit"); menuItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } } ); menu.add(menuItem); menuBar.add(menu); setJMenuBar(menuBar); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel helloLabel = new JLabel("Hello World!"); helloLabel.setFont(helloLabel.getFont().deriveFont(50f)); helloLabel.setHorizontalAlignment(SwingConstants.CENTER); getContentPane().add(helloLabel, BorderLayout.CENTER); Box box = Box.createVerticalBox(); box.add(new JLabel(" * Start hello_gui.exe again to see how startup notification works")); box.add(new JLabel(" * Quit and pass \"fail\" as an argument to hello_gui.exe to see what happens for a startup failure")); getContentPane().add(box, BorderLayout.SOUTH); } private static void printToConsole(String message) { // In order to see the following output, please start the launcher from a console window // with the parameter -console // // GUI applications usually cannot access the console if they were started from a console window // Since the "Allow -console" parameter option was selected in the launcher configuration of the hello_gui // executable, the console is acquired by the launcher and stdout will be printed to it System.out.println(message); } public static void main(String[] args) throws InterruptedException, Controller.ConnectionException { Controller.writeMessage("Initializing giant application ..."); Thread.sleep(1000); Controller.writeMessage("Opening complex main window ..."); Thread.sleep(1000); if (args.length == 1 && args[0].equals("fail")) { throw new RuntimeException("I was asked to fail"); } else { final Hello hello = new Hello(); printToConsole("Hello world"); // startup notification on Microsoft Windows Controller.registerStartupListener(new Controller.StartupListener() { public void startupPerformed(final String parameters) { SwingUtilities.invokeLater(new Runnable() { public void run() { String message = "I've been started again, with parameters \"" + parameters + "\"."; JOptionPane.showMessageDialog(hello, message, "Hello World", JOptionPane.INFORMATION_MESSAGE); printToConsole(message); } }); } }); hello.setVisible(true); } } }