繁体   English   中英

尽管没有错误,NetBeans Java项目仍不会显示GUI窗口

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

我正在尝试使用Netbeans IDE 7.1构建Java项目。

我以某种方式无法看到或查看我创建的GUI窗口。

请告知。

在我的课上:

package rmiSimpleCalc;

public class RMISimpleCalculatorMain {

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

MainCalculator是我要运行的GUI窗口。 它不会以某种方式显示。

我的控制台中没有错误消息。

这是MainCalculator代码:

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                   
}

任何建议表示赞赏。

MainCalculator类是JPanel 一个JPanel不能只是这样显示,它必须是Window一部分。 将其添加到JFrame ,并调用setVisible(true)JFrame

另外,@ npinti的建议非常好:在EDT线程中执行与GUI相关的代码。

此问题最有可能在本节中:

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

您需要在事件调度程序线程(EDT)中执行任何与GUI相关的任务。

尝试这样的事情:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM