<no main =“”classes =“”found =“”> </no>

时间:2013-12-30 14:57:07

标签: java swing user-interface netbeans

关于创建GUI的oracle教程,教程承诺在运行应用程序时我必须选择主类,但是,Netbeans没有找到任何Main类?

这是我的代码:

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">                          
private void initComponents() {

    jTextField1 = new javax.swing.JTextField();
    jLabel1 = new javax.swing.JLabel();
    jButton1 = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setTitle("Bookshop");

    jTextField1.setText("Enter Title");
    jTextField1.setName(""); // NOI18N
    jTextField1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jTextField1ActionPerformed(evt);
        }
    });

    jLabel1.setText("Book Title");

    jButton1.setText("Submit");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton1ActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jButton1)
                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addGap(18, 18, 18)
            .addComponent(jLabel1)
            .addContainerGap(244, Short.MAX_VALUE))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jLabel1)
                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE)
            .addComponent(jButton1)
            .addGap(228, 228, 228))
    );

    pack();
}// </editor-fold>                        

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
    // TODO add your handling code here:
}                                           

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:

     //Parse degrees Celsius as a double and convert to Fahrenheit.
String Title = (String)(jTextField1.getText());
jLabel1.setText("Selected Title:" + Title);

}                                        

/**
 * @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                     
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JTextField jTextField1;
// End of variables declaration                   
}

我认为“public static void main(String args []){”声明了一个主类。 GUI.java类在源包中,所以我真的不明白。

请注意我对Java很新,非常感谢您的时间。

2 个答案:

答案 0 :(得分:2)

你的理解是正确的,我看不出你的主要班级有什么明显的错误。

虽然说过:

public static void main(String args[]) {

应该是:

public static void main(String[] args) {

如果右键单击项目窗口中的Java文件并选择“运行此文件”或“调试此文件”,它将告诉netbeans执行该文件而忽略项目设置。

如果可行,则进入项目的属性并在其中设置主类以供将来使用。

追踪此事的最佳选择将是分治。创建一个新文件,在其中创建一个空的main()方法,只打印“hello world”,然后一次一段地传输代码,直到找到破坏它的东西。

答案 1 :(得分:1)

  1. 右键单击项目资源管理器中的项目
  2. 点击属性
  3. 点击“运行”
  4. 确保您的主类是您想要成为切入点的主类。 (确保使用完全限定名称,即mypackage.MyClass)
  5. 单击“确定”。
  6. 右键点击您的项目;单击“清理并构建”
  7. 运行项目
  8. 如果您只想运行该文件,请右键单击包浏览器中的类,然后单击“运行文件”或( Alt + R F )或( Shift + F6

    我之前犯的错误是当我创建一个新项目时,我忘记取消单击“创建主类”复选框,因此它为我创建了一个类,我不喜欢这样我删除了类在这种情况下,我必须执行上述步骤来解决问题,以便它能够正确运行.NetBlass为您创建的Main类是启动类。如果删除它,则需要手动指定新的启动类为项目,然后清理和建设。