我点击按钮后尝试重启游戏。
这应该是一个接一个地显示两个屏幕,并且这两个屏幕在两个相互依赖的类中定义。
但问题是第一个类(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并从此处调用后,实际上已经解决了这个问题。
答案 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();