rofans91
rofans91

Reputation: 3010

NetBeans Java Project Won't Display GUI Window Despite No Error

I am trying to build a java project using Netbeans IDE 7.1.

I somehow can't see or view the GUI window that I have created.

Please kindly advise.

In my class:

package rmiSimpleCalc;

public class RMISimpleCalculatorMain {

    public static void main(String[] args) {
        MainCalculator calc = new MainCalculator();
        calc.setVisible(true);
    }
}

the MainCalculator is the GUI window I would like to run. It somehow wont't display.

There is NO error message in my console tough..

Here is the MainCalculator code:

package rmiSimpleCalc;

import java.rmi.*;

public class MainCalculator extends javax.swing.JPanel {

    public MainCalculator() {
        initComponents();
        ComboBoxOperator.addItem("+");
        ComboBoxOperator.addItem("-");
        ComboBoxOperator.addItem("/");
        ComboBoxOperator.addItem("*");             
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        txtFirstDigit = new javax.swing.JTextField();
        txtSecondDigit = new javax.swing.JTextField();
        btnCalculate = new javax.swing.JButton();
        lblFirstDigit = new javax.swing.JLabel();
        lblSecondDigit = new javax.swing.JLabel();
        ComboBoxOperator = new javax.swing.JComboBox();
        lblOperator = new javax.swing.JLabel();
        lblResult = new javax.swing.JLabel();
        lblHeader = new javax.swing.JLabel();
        btnConfigureServer = new javax.swing.JButton();
        txtResult = new javax.swing.JTextField();

        btnCalculate.setText("Calculate");
        btnCalculate.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCalculateActionPerformed(evt);
            }
        });

        lblFirstDigit.setText("First Digit");

        lblSecondDigit.setText("Second Digit");

        ComboBoxOperator.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));

        lblOperator.setText("Operator");

        lblResult.setText("Result");

        lblHeader.setText("RMI Simple Calculator");

        btnConfigureServer.setText("Configure Server");
        btnConfigureServer.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnConfigureServerActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(lblFirstDigit, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(lblSecondDigit, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(lblOperator, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(lblResult, javax.swing.GroupLayout.Alignment.TRAILING))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(lblHeader)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(ComboBoxOperator, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(btnCalculate))
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addComponent(txtSecondDigit)
                        .addComponent(txtFirstDigit, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(txtResult, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnConfigureServer)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(12, 12, 12)
                .addComponent(lblHeader)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtFirstDigit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblFirstDigit))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtSecondDigit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblSecondDigit))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(ComboBoxOperator, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblOperator)
                    .addComponent(btnCalculate))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblResult)
                    .addComponent(txtResult, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(btnConfigureServer)
                .addContainerGap(24, Short.MAX_VALUE))
        );
    }                       

    private void btnConfigureServerActionPerformed(java.awt.event.ActionEvent evt) {                                                   

    }                                                  

    private void btnCalculateActionPerformed(java.awt.event.ActionEvent evt) {                                             
        double firstdigit;
        double seconddigit;
        String operator;

        firstdigit = Double.valueOf(txtFirstDigit.getText());

        seconddigit = Double.valueOf(txtSecondDigit.getText());

        operator = ComboBoxOperator.getSelectedItem().toString();

        try
        {
            CoreInterface coreobj = (CoreInterface) Naming.lookup("localhost/Core");
            double result = (coreobj.calc(firstdigit,seconddigit,operator));
            txtResult.setText(Double.toString(result));
        }

        catch(Exception e)
        {
            txtResult.setText("e");
        }   
    }                                            

    private javax.swing.JComboBox ComboBoxOperator;
    private javax.swing.JButton btnCalculate;
    private javax.swing.JButton btnConfigureServer;
    private javax.swing.JLabel lblFirstDigit;
    private javax.swing.JLabel lblHeader;
    private javax.swing.JLabel lblOperator;
    private javax.swing.JLabel lblResult;
    private javax.swing.JLabel lblSecondDigit;
    private javax.swing.JTextField txtFirstDigit;
    private javax.swing.JTextField txtResult;
    private javax.swing.JTextField txtSecondDigit;
    // End of variables declaration                   
}

Any advise is appreciated.

Upvotes: 0

Views: 8571

Answers (2)

npinti
npinti

Reputation: 52185

The issue is most likely in this section:

public static void main(String[] args) {
        MainCalculator calc = new MainCalculator();
        calc.setVisible(true);
    }

You need to make any GUI related tasks within the Event Dispatcher Thread (EDT).

Try something like so:

public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable()
        {
            @Override
            public void run()
            { 
                MainCalculator calc = new MainCalculator();
                calc.setVisible(true);
            }
        });
    }

Upvotes: 1

Radu Murzea
Radu Murzea

Reputation: 10900

The MainCalculator class is a JPanel. A JPanel can't just be displayed like that, it has to be part of a Window. Add it to a JFrame and call setVisible(true) on the JFrame.

Also, @npinti's advice is very good: execute GUI-related code in the EDT thread.

Upvotes: 2

Related Questions