是否可以访问在主类中创建的对象?或者有办法获得所有者/参考类?
例如,在下面的代码中,如何从菜单 myMainClass 上的方法 setMenu >类对象( firstMenu , secondMenu )
我可以将Menu对象设为静态,但似乎不是正确的方法......
主要类
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");
}
}
由于
答案 0 :(得分:0)
你已经回答了自己的问题。将setMenu
方法设为静态。
public void setMenu(String s) {
CardLayout cl = (CardLayout) (container.getLayout());
cl.show(container, s);
}
使用MyMainClass.setMenu
类中的类名Menu
调用它。
否则,您必须通过重载其构造函数将MyMainClass
的实例传递给Menu
类。
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");
}
}
答案 1 :(得分:0)
setMenu()是一个实例方法,如果你想调用它,你需要实例化myMainClass,btw应该被称为MyMainClass,所以你需要这样做:
MyMainClass mainClass = new MyMainClass();
mainClass.setMenu("secondMenu");
如果您希望通过类访问该方法,那么您需要创建静态方法,因此它是一个类方法而不是实例方法,因此您可以将其称为:
MyMainClass.setMenu("secondMenu");