此项目有5个课程,Button
Minefield
GUI
MenuBar
Game
。
Button
是一个单独的雷区。
Minefield
包含一个2d按钮数组,以及涉及所有按钮的操作。
GUI
是MineField网格上方的部分,显示重置按钮,已过去的时间以及剩余的标记数,
Game
将所有其他类放在Panel中,并将它们放在applet中。这里没有游戏逻辑。
以下是我applet
的屏幕截图我在使用继承方面遇到了问题。如果我能解决这个问题,我也可以解决其他问题。它与调用超类中的方法有关。
我的一个问题:
当右键单击Button
我的单元格时,鼠标侦听器会将其拾取并将JButton
的文本更改为“F”以获取标记。但是,我想更新有多少标志可用的计数器,这是Minefield
类中的变量。最后,我希望GUI
类侦听对该变量的更改并更新JLabel
。
MouseListener
Button
:
if (e.getButton() == MouseEvent.BUTTON3)
{
advanceCurrentState();
if (currentState == "FLAG")
super.setNumFlagsRemaining(-1); //update the Minefields variable
}
回到Minefield
:
public void setNumFlagsRemaining(int delta)
{
numFlagsRemaining += delta;
}
但这不起作用。当我调试时,super.setNumFlagsRemaining(-1)
正在创建Minefield
的新实例,我无法更新超类中的变量。我认为它会更新Minefield的现有对象,但我读到Java没有通过引用传递,所以我很困惑如何做到这一点。如果您需要查看其他代码请说明,我试着不要将这篇文章整理成5个整体并说“修复它”。
答案 0 :(得分:1)
您没有提供足够的代码,所以我只能在这里猜测。 我认为你对key word super感到困惑 它实际上意味着从你继承的超类中调用方法。 我怀疑JButton从你的班级Minefield继承了什么。通常它是相反的。
此外,还会在JLabel中存储和显示字段数。实际上,你必须调用具有此JLabel的类的方法并负责总计数。