<No main classes found> ......我该如何解决?

<No main classes found> ............ how can i solve it?

我正在尝试编译我的简单程序。但是当我想编译这个程序时:

import javax.swing.*;

public class First {


JFrame f;  

First(){  


f=new JFrame();   

    String i1 = JOptionPane.showInputDialog(f,"Enter Name");      
}  

public static void main(String[] args) {  


new JOptionPane();  
}  

}

我收到这条消息:<No main classes found>

我的IDE是netbeans

这是照片:

https://i.stack.imgur.com/pq6Y8.png

嗯,你创建这个 class 的方式让我想知道你的项目中是否还有另一个 class 实际上是 startup class 因为,为了显示名称输入的输入框,您需要创建 First 的实例(不是 JOptionPane()),以便构造函数可以触发它。

如果这是您项目中唯一的 class,那么您仍然可以触发输入框,但您需要在 main() 中创建 First 的实例方法,像这样:

public static void main(String[] args) {
    /* You could just use:  new First();  but you'll see 
       the NetBeans yellow Warning underline beneath the 
       code line which you can ignore. Better to provide
       a variable to the instance of First as done here. */
    First f2 = new First();  
}

总的来说,将名称输入提示直接放入 main() 方法中可能会更好。一旦提供了名称,您还希望将该名称保留到一个字符串变量中,该变量可能对整个 class 是全局的,而不仅仅是在构造函数的范围内。 String i1 或许应该声明为 class 成员变量,并命名为更合适的名称,例如:String userName;.

我得到了 JFrame 的想法,因为如果没有父组件和 ,JOptionPanes 喜欢隐藏在 IDE(或其他 'On Top' windows)后面使用 null。但是,如果您这样做,请对其进行设置,使其不会无意中以默认 EXIT_ON_CLOSE 属性 值关闭您的应用程序。你会希望它是 DISPOSE_ON_CLOSE。您还希望将 JFrame 的 setAlwaysOnTop 属性 设置为布尔值 true。使用 JOptionPane 后,请务必处理 JFrame,否则您的应用程序将保持活动状态,直到某些东西实际关闭它。您可以在下面的示例中看到这一点:

import javax.swing.*;

public class First {

    private static JFrame dialogPARENT;    // Parent used for dialogs that don't have a parent.
    private static String userName;        // Holds the User Name supplied in either the Input Box or Setter method.

    // Class Constructor
    First() {
        dialogPARENT = new JFrame();
        dialogPARENT.setAlwaysOnTop(true);
        dialogPARENT.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        dialogPARENT.setLocationRelativeTo(null);

        userName = JOptionPane.showInputDialog(dialogPARENT, "Enter Your Name:");
        dialogPARENT.dispose();  // dispose of the JFrame.
    }

    public static void main(String[] args) {
        First first = new First();   // Fires the constructor

        // Display the User Name. As you can see, basic HTML can 
        // be used in your Message Box dialog display string.
        JOptionPane.showMessageDialog(dialogPARENT, "<html>The name you entered is:<br><br>"
                + "<center><font color=red><b>" + userName + "</b></font></center><br></html>", 
                  "Supplied User Name", JOptionPane.INFORMATION_MESSAGE);
        dialogPARENT.dispose();   // dispose of the JFrame.
    }
}