首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扫雷舰Java继承

问扫雷舰Java继承
EN

Stack Overflow用户
提问于 2016-02-17 16:43:22
回答 1查看 361关注 0票数 2

我为这个项目有5个类,Button Minefield GUI MenuBar Game。

Button是一个单独的地雷细胞。

Minefield包含一个2d的按钮数组,以及涉及所有按钮的操作。

GUI是MineField网格上方的部分,显示重置按钮、过期时间和保留多少标志,

Game将所有其他类放在面板中,并将它们放在applet中。这里没有游戏逻辑。

这是我的小程序截图

当涉及到使用继承时,我遇到了一些问题。如果我能解决这个问题,我也可以做其他的问题。它与调用超类中的方法有关。

我的问题之一:

当Button矿单元格被正确单击时,鼠标侦听器会将它捡起来,并将JButton的文本更改为"F“作为标志。但是,我想更新有多少标志可用的计数器,这是Minefield类中的一个变量。最后,我希望GUI类侦听对该变量的更改,并更新JLabel。

在MouseListener for Button中

代码语言:javascript
复制
 if (e.getButton() == MouseEvent.BUTTON3)
        {
           advanceCurrentState();     

           if (currentState == "FLAG")
             super.setNumFlagsRemaining(-1); //update the Minefields variable
        }

回到Minefield

代码语言:javascript
复制
   public void setNumFlagsRemaining(int delta)
    {
        numFlagsRemaining += delta;
    }

但这不管用。在调试时,super.setNumFlagsRemaining(-1)正在创建一个新的Minefield实例,并且无法更新超类中的变量。我原以为它会更新雷区的现有对象,但我读到Java并不是通过引用传递的,所以我对如何做到这一点感到困惑。如果您需要看到更多的代码--请这样说--我试着不把这篇文章杂乱无章地写成5个类,然后说,“修复它”。

EN

回答 1

Stack Overflow用户

发布于 2016-02-18 21:01:28

您没有提供足够的代码,所以我只能在这里猜测。我认为您与关键词超级混淆了,它实际上意味着从继承的超类调用方法。我怀疑JButton是否继承了你们班雷区的任何东西。通常情况是相反的。

此外,字段的计数也存储在JLabel中并显示出来。因此,实际上,您必须调用具有这个JLabel的类的方法,并处理总数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35462666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档