1

任何人都知道为什么会出现错误“无法从菜单类型中对非静态方法 FileMenu() 进行静态引用”?

import javax.swing.JOptionPane;

public class Menu {

    public void FileMenu() {            
    }

    public void ViewMenu() {
    }

    public static void main(String[] args) {
        String[] mainbuttons = { "File", "View" };

        int choice = JOptionPane.showOptionDialog(null, "Please Select An Option: ","Application Menu",JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null,mainbuttons, mainbuttons[2]);

        switch (choice) {
            case 0:
                FileMenu();
                break;
            case 1:
                ViewMenu();
                break;
        }
    }       
}
4

2 回答 2

0

FileMenu()在您的代码中不是很明显不是一个static方法,并且在声明中您在上下文switch中调用它(即没有对象)。您有两个选择static

  1. 使 FileMenu() 方法像静态一样public static void FileMenu(),然后您可以在没有任何类的情况下调用objectMenu

  2. 创建一个 Menu 类的对象并使用它来调用FileMenu()方法。喜欢

    Menu obj = new Menu();

    obj.FileMenu();

于 2013-11-08T23:26:20.850 回答
0

这意味着您不能在静态方法(您的情况下为 static void main(String[] args))中调用非静态方法。

正常工作使方法FileMenu()ViewMenu() 静态

public static void FileMenu() {

}

public static void ViewMenu() {


}

或者

创建 Menu 对象并调用 FileMenu() 和 ViewMenu() 方法。

Menu m = new Menu();

switch (choice) {
    case 0:
        m.FileMenu();
        break;

    case 1:
        m.ViewMenu();
        break;

    }
于 2013-11-08T23:26:45.393 回答