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