0

I'm trying to start a Java GUI (created in Netbeans) from a batch file without the command window opening. I'be been looking the last hour and have tried javaw, start /B javaw etc. but nothing is working. Has anyone any idea what I'm doing wrong?

run_GUI.BAT

@ECHO OFF

start /B javaw GUI -ORBInitialPort 1050 -ORBInitialHost localhost

PAUSE

GUI.java

import javax.swing.*;
/**
 *
 * @author  
 */
public class GUI extends javax.swing.JFrame {

    /**
     * Creates new form GUI
     */
    public GUI() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;

        outerPanel = new javax.swing.JPanel();
        upperInnerPanel = new javax.swing.JPanel();
        gameWinsPanel = new javax.swing.JPanel();
        wonLabel = new javax.swing.JLabel();
        lostLabel = new javax.swing.JLabel();
        gameWinsLabel = new javax.swing.JLabel();
        gameLossesLabel = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        textDisplay = new javax.swing.JTextArea();
        gameButtonsPanel = new javax.swing.JPanel();
        newGameButton = new javax.swing.JButton();
        jButton1 = new javax.swing.JButton();
        lowerInnerPanel = new javax.swing.JPanel();
        optionButtonsPanel = new javax.swing.JPanel();
        paperButtton = new javax.swing.JButton();
        scissorsButton = new javax.swing.JButton();
        stoneButton = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setMaximumSize(new java.awt.Dimension(500, 500));
        setMinimumSize(new java.awt.Dimension(500, 0));
        setPreferredSize(new java.awt.Dimension(600, 657));
        getContentPane().setLayout(new java.awt.GridLayout());

        outerPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "PAPER SCISSORS STONE", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 18))); // NOI18N

        upperInnerPanel.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));

        gameWinsPanel.setLayout(new java.awt.GridBagLayout());

        wonLabel.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        wonLabel.setText("Won:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.gridwidth = 2;
        gridBagConstraints.ipady = 12;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(11, 10, 0, 0);
        gameWinsPanel.add(wonLabel, gridBagConstraints);

        lostLabel.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lostLabel.setText("Lost:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.ipady = 12;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(6, 10, 11, 0);
        gameWinsPanel.add(lostLabel, gridBagConstraints);

        gameWinsLabel.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        gameWinsLabel.setText("0");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.gridwidth = 2;
        gridBagConstraints.ipadx = 19;
        gridBagConstraints.ipady = 12;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(11, 10, 0, 57);
        gameWinsPanel.add(gameWinsLabel, gridBagConstraints);

        gameLossesLabel.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        gameLossesLabel.setText("0");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.ipadx = 19;
        gridBagConstraints.ipady = 12;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(6, 9, 11, 0);
        gameWinsPanel.add(gameLossesLabel, gridBagConstraints);

        textDisplay.setColumns(20);
        textDisplay.setRows(5);
        jScrollPane1.setViewportView(textDisplay);

        gameButtonsPanel.setLayout(new java.awt.GridLayout(3, 0));

        newGameButton.setText("New Game");
        gameButtonsPanel.add(newGameButton);

        jButton1.setText("Exit");
        gameButtonsPanel.add(jButton1);

        javax.swing.GroupLayout upperInnerPanelLayout = new javax.swing.GroupLayout(upperInnerPanel);
        upperInnerPanel.setLayout(upperInnerPanelLayout);
        upperInnerPanelLayout.setHorizontalGroup(
            upperInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, upperInnerPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 296, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addGroup(upperInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(upperInnerPanelLayout.createSequentialGroup()
                        .addComponent(gameButtonsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 131, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(0, 0, Short.MAX_VALUE))
                    .addComponent(gameWinsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );
        upperInnerPanelLayout.setVerticalGroup(
            upperInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, upperInnerPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(upperInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(upperInnerPanelLayout.createSequentialGroup()
                        .addComponent(gameWinsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(gameButtonsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 182, Short.MAX_VALUE))
                .addContainerGap())
        );

        lowerInnerPanel.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));

        optionButtonsPanel.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        optionButtonsPanel.setLayout(new java.awt.GridLayout());

        paperButtton.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        paperButtton.setText("PAPER");
        optionButtonsPanel.add(paperButtton);

        scissorsButton.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        scissorsButton.setText("SCISSORS");
        optionButtonsPanel.add(scissorsButton);

        stoneButton.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        stoneButton.setText("STONE");
        optionButtonsPanel.add(stoneButton);

        javax.swing.GroupLayout lowerInnerPanelLayout = new javax.swing.GroupLayout(lowerInnerPanel);
        lowerInnerPanel.setLayout(lowerInnerPanelLayout);
        lowerInnerPanelLayout.setHorizontalGroup(
            lowerInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(lowerInnerPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(optionButtonsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        lowerInnerPanelLayout.setVerticalGroup(
            lowerInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, lowerInnerPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(optionButtonsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 117, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout outerPanelLayout = new javax.swing.GroupLayout(outerPanel);
        outerPanel.setLayout(outerPanelLayout);
        outerPanelLayout.setHorizontalGroup(
            outerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(outerPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(outerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(lowerInnerPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(upperInnerPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        outerPanelLayout.setVerticalGroup(
            outerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(outerPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(upperInnerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(lowerInnerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(13, Short.MAX_VALUE))
        );

        getContentPane().add(outerPanel);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new GUI().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JPanel gameButtonsPanel;
    private javax.swing.JLabel gameLossesLabel;
    private javax.swing.JLabel gameWinsLabel;
    private javax.swing.JPanel gameWinsPanel;
    private javax.swing.JButton jButton1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lostLabel;
    private javax.swing.JPanel lowerInnerPanel;
    private javax.swing.JButton newGameButton;
    private javax.swing.JPanel optionButtonsPanel;
    private javax.swing.JPanel outerPanel;
    private javax.swing.JButton paperButtton;
    private javax.swing.JButton scissorsButton;
    private javax.swing.JButton stoneButton;
    private javax.swing.JTextArea textDisplay;
    private javax.swing.JPanel upperInnerPanel;
    private javax.swing.JLabel wonLabel;
    // End of variables declaration//GEN-END:variables
}
Andremoniy
  • 34,031
  • 20
  • 135
  • 241
Al D
  • 657
  • 2
  • 10
  • 27
  • 1
    Possible duplicate of [how-can-i-run-a-program-from-a-batch-file-without-having-the-console-open-after](http://stackoverflow.com/questions/324539/how-can-i-run-a-program-from-a-batch-file-without-having-the-console-open-after) – Shane Voisard Apr 03 '15 at 13:10
  • Yes I'm an idiot. The pause statement in the batch was causing the command window to stay open – Al D Apr 03 '15 at 13:21
  • Go easy on yourself...we all suffer from [inattentional blindness](http://en.wikipedia.org/wiki/Inattentional_blindness) sometimes. – Shane Voisard Apr 03 '15 at 13:35

2 Answers2

0

If you don't want a console window, don't use a batch file.

Just by specifing a path to JavaW you can have a proper command line, no need for a batch. It can also go as is into a shortcut. Start says do a Windows command line, same as Start - Run or a shortcut's target. There is VBS and JS.

There is simply no need for a batch file.

Serenity
  • 9
  • 3
  • It was a CORBA project so I needed the batch files to start the ORB, server, and clients – Al D Apr 19 '15 at 12:47
0

If you don't want it to run in the console, you need to convert it to a .jar file. Jars can be executable if made properly, and will run without the console as a GUI program.

To make a .jar file, you need three things.

1: Make sure command prompt (assuming you're using windows, otherwise you'll need equivalent commands for your OS) is properly set up to compile java with the javac command. If javac works in the console, so will the jar command.

2: A class file for your program, which you should already have.

3: A manifest.

So, to make a manifest, just open notepad and type the following:

Main-Class: GUI

After your class name, press enter or return. If you don't have a newline at the end of your manifest, it won't work.

Save this in the same folder as your class file as "main.mf"

Once you have all this, open command prompt, change the current working directory as needed, and enter the following:

jar cvmf main.mf GUI.jar Gui.class

This will create a .jar file named GUI.jar, which, when double-clicked, will run your program without the console.

I would advise looking up more information about .jar files, as they are useful for packing files together for distribution.