在另一个类中调用两个相互依赖的类? -Java GUI

时间:2017-11-19 17:57:37

标签: java class user-interface object

我点击按钮后尝试重启游戏。

这应该是一个接一个地显示两个屏幕,并且这两个屏幕在两个相互依赖的类中定义。

但问题是第一个类(WordPuzzle)使用了第二个类(Skeleton)中的另一个对象,而不是我调用的那个,而我调用的Skeleton类像往常一样工作。

变量尝试设置WordPuzzle对象应运行的次数。

增益是一个来自Skeleton类的整数。

WordPuzzle类需要一个整数(来自Skeleton)和一个Skeleton对象才能被初始化。

Skeleton类需要一个WordPuzzle对象。

 //define variables
 Skeleton window;



 //Inside actionPerformed

  WordPuzzle puzzlegame = new WordPuzzle(window.gain, window); // creates puzzle window but does not make it visible yet
  puzzlegame.tries = 0; //set number of tries back to 0
  puzzlegame.getContentPane().setBackground(Color.WHITE);

  //ERROR: THE VALUES FOR CONSONANTGAIN COME FROM ANOTHER SKELETON OBJECT

  Skeleton window = new Skeleton (puzzlegame);
  window.getContentPane().setBackground(Color.WHITE);
  window.setVisible (true);

  this.dispose();

我希望你们熟悉这一点,我绝对难过。谢谢C:

编辑:虽然我选择了最佳答案,但在将代码传输到main并从此处调用后,实际上已经解决了这个问题。

1 个答案:

答案 0 :(得分:2)

首先我看到你有一个未初始化的变量,但我假设你从某个地方调用它并初始化它。

 Skeleton window;
`

//在actionPerformed

在这里,你创建了一个带有骨架窗口的益智游戏,没问题。

  WordPuzzle puzzlegame = new WordPuzzle(window.gain, window); // creates puzzle window but does not make it visible yet
  puzzlegame.tries = 0; //set number of tries back to 0
  puzzlegame.getContentPane().setBackground(Color.WHITE);

现在正在使用puzzlegame创建骨架,并且puzzlegame具有骨架窗口,因为puzzlegame是使用Skeleton window创建的。你应该在这里创建另一个窗口并将该窗口作为parmater。在java中,您可以使用new关键字创建新对象。

Skeleton window = new Skeleton (new WordPuzzle()); //Here you need a new object
  window.getContentPane().setBackground(Color.WHITE);
  window.setVisible (true);

  this.dispose();