JButtons不遵循预期的处理程序?

时间:2017-01-24 05:57:46

标签: java swing user-interface jbutton procedure

我正在制作一个扫雷游戏,在第一部分中,我决定使用boolean1(该字段是16x16阵列)是否在某个按钮上有炸弹我已经测试了这个部分,输出正确。 50个随机true值,其余为false我的问题从第二部分开始,我想根据boolean1的值通过按钮获取某个操作。在实现代码时,所有jbuttons都会跟随第二个ActionListener,其中图标设置为bomb我希望jbuttons也跟随第一个处理程序。< / p>

第一个程序

static void placeMines() 
        {
                for (int x=0;x<16;x++)
                {
                    for (int y=0;y<16;y++)
                    {
                        if(boolean1[x][y]=(true))
                        {
                            boolean1[x][y]=false;
                        }
                    }
                }



                int minesPlaced = 0;
                Random random = new Random(); 
                while(minesPlaced < 50) 
                {
                  int a = random.nextInt(Width);
                  int b = random.nextInt(Height);
                  boolean1[a][b]=(true);
                  minesPlaced ++;
                }
        }

第二个程序:

static void buttonfunctions()
{       
        for(int c=0;c<16;c++)
        {
            for(int d=0;d<16;d++)
            {
                if (boolean1[c][d]=false)
                {   
                    final int temp3=c;
                    final int temp4=d;

                    jbuttons[c][d].addActionListener(new ActionListener()
                    {
                        @Override
                        public void actionPerformed (ActionEvent e)
                            {

                                        jbuttons[temp3][temp4].setIcon(clickedCell);

                            }
                    });
                }
                if(boolean1[c][d]=true)
                {
                    final int temp1=c;
                    final int temp2=d;

                    jbuttons[temp1][temp2].addActionListener(new ActionListener()
                        {
                            @Override
                            public void actionPerformed (ActionEvent e)
                                {                           
                                            jbuttons[temp1][temp2].setIcon(bomb);                   
                                }
                        });
                }

            }   
        }

}

1 个答案:

答案 0 :(得分:2)

为了检查布尔值是否为真,你想做:

if (myBoolean)

if (myBoolean == true) 

是等价的,但比需要的更详细。

if(myBoolean = true)在语法上是正确的,但具有为myBoolean赋值true的效果,然后评估赋值的结果,即true。所以,回到你的代码:

如果以下代码的意图是重置矩阵:

   if(boolean1[x][y]=(true))
   {
      boolean1[x][y]=false;
   }

然后你应该做

boolean1[x][y] = false;

另外

if (boolean1[c][d]=false)

应该是:

if (! boolean1[c][d]) 

您的代码可能有更多错误,但您可能想要开始解决此问题。