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

在Java中从单独的类文件调用方法,java,model-view-controller,Java,Model View Controller,用Java为一个类项目构建一个简单的石头剪纸GUI游戏 为了使用MVC方法,我将下面resultsGUI()中的代码从“Controller”类移到了“View”类 我尝试在控制器类中创建视图类的实例,并像这样调用方法:View.resultsGUI()但这在我的编译器中引发了异常错误 我如何调用驻留在我的视图类中的resultsGUI方法来执行chooseWinner()方法(也在下面)的底部,就像它是chooseWinner()的一部分时的代码一样 我是新手,非常感谢你的帮助 选择下面的内部

用Java为一个类项目构建一个简单的石头剪纸GUI游戏

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

我尝试在控制器类中创建视图类的实例,并像这样调用方法:
View.resultsGUI()但这在我的编译器中引发了异常错误

我如何调用驻留在我的视图类中的
resultsGUI
方法来执行
chooseWinner()
方法(也在下面)的底部,就像它是
chooseWinner()
的一部分时的代码一样

我是新手,非常感谢你的帮助

选择下面的内部方法:

    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;
    }




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


您需要将您的
游戏
类与其他类组合在一起。因此,您可以得到以下结果:

class Game  
{     
    View view = new View();  
    public void foo()  
    {  
        view.getResults();
    }    
}  
如果不想实例化
视图
类,可以将
getResults
函数标记为static并如下引用:

View.getResults()

您的控件应该有视图和模型的实例,而不仅仅是任何视图和模型实例,而是活动的当前可视化视图和当前使用的模型。在您的类中,可以使用main方法执行以下操作:

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

  // start the GUI up
}
在控件类中,可以使用构造函数参数设置类字段:

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.
  // ....
}

@phamousphil:不客气!谢谢你回复我们你的决议!
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.
  // ....
}