从Java中的单独类文件调用方法

时间:2013-05-01 01:51:32

标签: java model-view-controller

为Java中的类项目构建一个简单的Rock Paper Scissors GUI游戏。

尝试使用MVC方法,我将resultsGUI()下面的代码从我的“Controller”类移到了我的“View”类。

我尝试在Controller类中创建一个View类的实例,并调用这样的方法:view.resultsGUI();但是在我的编译器中引发了异常错误。

如何调用驻留在我的View类中的resultsGUI方法在chooseWinner()方法(也在下方)的底部执行,因为代码在{{1}的一部分时执行}?

我是新手,感谢他们的帮助。

选择下面的方法:

chooseWinner()

resultsGUI方法如下:         public void resultsGUI(){         JFrame rFrame =新的JFrame(“匹配结果”);         Container panel = rFrame.getContentPane();         panel.setLayout(NULL);

    public static void chooseWinner(int x) {
    playerChoice = x;

    String winningCombo = "" + Math.min(compChoice, playerChoice)
            + Math.max(compChoice, playerChoice);

    switch (Integer.parseInt(winningCombo)) {
        case 1:
            text = "Paper wins!";
            if (playerChoice == 2) {
                playerWon = 1;
            }
            break;
        case 2:
            text = "Rock wins!";
            if (playerChoice == 1) {
                playerWon = 1;
            }
            break;
        case 3:
            text = "Scissors wins!";
            if (playerChoice == 3) {
                playerWon = 1;
            }
            break;

    }

    if (playerWon == 1) {
        text1 = "Congrats, you win!";
        playerWon = 0;
        win = win + 1;
        total = total + 1;
    } else if (playerWon == 2) {
        text1 = "It's a tie!";
        playerWon = 0;
    } else {
        text1 = "Computer wins!";
        total = total + 1;
    }




}  

2 个答案:

答案 0 :(得分:3)

您的控件应该具有视图和模型的实例,而不仅仅是任何视图和模型实例,而是活动的当前可视化视图和当前使用的模型。这样的事情可能在你的课堂上使用主要方法:

public static void main(String[] args) {
  View view = new View();
  Model model = new Model();
  Control control = new Control(view, model);

  // start the GUI up
}

在Control类中,您将使用构造函数参数来设置类字段:

public class Control {
  private View view;
  private Model model;

  public Control(View view, Model model) {
    this.view = view;
    this.model = model;
  }

  // now your control can call model and view methods.
  // ....
}

答案 1 :(得分:0)

您需要将您的Game课程与其他课程一起编写。所以你明白了:

class Game  
{     
    View view = new View();  
    public void foo()  
    {  
        view.getResults();
    }    
}  

如果您不想实例化View类,可以将getResults函数标记为静态,并像这样引用它:

View.getResults()