0

割り当てのために既存の Java コードをいくつか変更していますが、ActionListener 内から既存のオブジェクトの関数を呼び出す方法がわかりません。

「myGame」のインスタンスは 1 つだけです。

関連するコードは次のとおりです。

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()」を呼び出すにはどうすればよいですか?

4

2 に答える 2

0

私はあなたの問題を完全には理解していません。私が理解したのは、クラスのインスタンスであるオブジェクトでsolveGame()関数を呼び出すことができないということです。freshGamemyGame

1.関数solveGame()Boardクラスにあるため、インスタンスを使用してのみ呼び出すことができBoardます。
2したがって、それを使用するにBoardは、 myGameクラスで のインスタンスを作成する必要があります。次のようになります。

public class myGame extends JFrame { 
  private Board board;
  public myGame() { 
    //...snip...

    statsBar = new JLabel(""); 
    board= Board(statsBar ) // initializing Board Class . you can do your self 

    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();

          // now you can call 
            board.solveGame();
        }
    });
    topMnuGame.add(mnuSolve);
    menubar.add(topMnuGame);
 }
public static void main(String[] args) { 
    myGame freshGame = new myGame();
 }
}
于 2013-10-23T07:01:46.630 に答える