我正在修改一些现有的 Java 代码以进行分配,但我不知道如何从 ActionListener 中调用现有对象的函数。
“myGame”只会有一个实例。
这是相关代码;
public class myGame extends JFrame {
public myGame() {
//...snip...
statsBar = new JLabel("");
add(statsBar, BorderLayout.SOUTH);
add(new Board(statsBar));
setResizable(false);
setVisible(true);
addMenubar();
}
private void addMenubar() {
JMenuBar menubar = new JMenuBar();
JMenu topMnuGame = new JMenu("File");
JMenuItem mnuSolve = new JMenuItem("Solve");
mnuSolve.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
// freshGame.solveGame();
// this is where I need to call the solveGame function
// for the "freshGame" instance.
solveGame();
}
});
topMnuGame.add(mnuSolve);
menubar.add(topMnuGame);
}
public static void main(String[] args) {
myGame freshGame = new myGame();
}
}
.
public class Board extends JPanel {
public Board(JLabel statsBar) {
this.statsBar = statsBar;
//..snip..
addMouseListener( new gameAdapter() );
}
public void solveGame() {
// .. do stuff with object ..
}
}
所以我的问题是,如何使用“freshGame”实例从“myGame”类中调用“solveGame()”?
最佳答案
简短的通用答案:
在 Java 中,如果有一个对象,例如也称为类的实例
MyClass myObj = new MyClass();
然后您可以像这样访问该对象的类的非静态成员:
myObj.myMethod();
无论您要在何处调用方法,都需要 a reference到正确的对象,因此将其作为参数传递给需要它的方法:
class OtherClass {
// snip constructors etc
public void otherMethod(MyClass obj) {
obj.myMethod();
}
}
或者,将其作为构造函数参数传递并将其存储在私有(private)成员变量中,以便稍后从方法中调用它。
class SomeClass {
private final MyClass someMyClass;
SomeClass(MyClass someMyClass) {
this.someMyClass = someMyClass;
}
public void someMethod() {
this.someMyClass.myMethod();
}
}
关于java - 如何从现有对象的类外部调用该对象的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19532554/