Java 从另一个类访问在主类中创建的对象方法

Java 从另一个类访问在主类中创建的对象方法,java,Java,可以访问在主类中创建的对象吗?或者有一种获取所有者/引用类的方法 例如,在下面的代码中,如何从菜单类对象之一(firstMenu,secondMenu)调用mymain类上的方法setMenu 我可以使菜单对象静态,但似乎不是正确的方法 主类 public class myMainClass extends JFrame { JPanel container; Menu firstMenu; Menu secondMenu; myMainClass() {

可以访问在主类中创建的对象吗?或者有一种获取所有者/引用类的方法

例如,在下面的代码中,如何从菜单类对象之一(firstMenusecondMenu)调用mymain类上的方法setMenu

我可以使菜单对象静态,但似乎不是正确的方法

主类

public class myMainClass extends JFrame {

    JPanel container;
    Menu firstMenu;
    Menu secondMenu;

    myMainClass() {

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400, 400);

        firstMenu = new Menu();
        secondMenu = new Menu();

        container = new JPanel(new CardLayout());
        container.add(firstMenu, "firstMenu");
        container.add(secondMenu, "secondMenu");

        add(container);
    }

    public void setMenu(String s) {
        CardLayout cl = (CardLayout) (container.getLayout());
        cl.show(container, s);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                myMainClass myMainClassObject = new myMainClass();
                myMainClassObject.setVisible(true);
            }
        });
    }
}
public class Menu extends JFrame {

    Menu() {
        //How can I call myMainClass setMenu method from here?
        //myMainClass.setMenu("secondMenu");
        //myMainClassObject.setMenu("secondMenu");
    }
}
菜单类

public class myMainClass extends JFrame {

    JPanel container;
    Menu firstMenu;
    Menu secondMenu;

    myMainClass() {

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400, 400);

        firstMenu = new Menu();
        secondMenu = new Menu();

        container = new JPanel(new CardLayout());
        container.add(firstMenu, "firstMenu");
        container.add(secondMenu, "secondMenu");

        add(container);
    }

    public void setMenu(String s) {
        CardLayout cl = (CardLayout) (container.getLayout());
        cl.show(container, s);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                myMainClass myMainClassObject = new myMainClass();
                myMainClassObject.setVisible(true);
            }
        });
    }
}
public class Menu extends JFrame {

    Menu() {
        //How can I call myMainClass setMenu method from here?
        //myMainClass.setMenu("secondMenu");
        //myMainClassObject.setMenu("secondMenu");
    }
}

谢谢你回答了你自己的问题。将
setMenu
方法设为静态

public void setMenu(String s) {
        CardLayout cl = (CardLayout) (container.getLayout());
        cl.show(container, s);
    }
并使用
菜单中的类名
MyMainClass.setMenu
调用它

否则,您必须通过重载其构造函数将
MyMainClass
的实例传递到
菜单

firstMenu = new Menu(this);
secondMenu = new Menu(this);
在另一节课上

public class Menu extends JFrame {

    Menu() {
        //How can I call myMainClass setMenu method from here?
        //myMainClass.setMenu("secondMenu");
        //myMainClassObject.setMenu("secondMenu");
    }

    Menu(MyMainClass main) {
        main.setMenu("secondMenu");
    }
}
setMenu()是一个实例方法,如果您想调用它,您需要实例化myMainClass,顺便说一句,它应该被称为myMainClass,因此您需要执行以下操作:

MyMainClass mainClass = new MyMainClass();
mainClass.setMenu("secondMenu");
如果希望通过类访问该方法,则需要创建静态方法,因此它是类方法而不是实例方法,因此可以像以下方式调用它:

MyMainClass.setMenu("secondMenu");