如何将JButton移动到空的磁贴?

时间:2016-01-12 14:20:53

标签: java jbutton

所以我得到了一个Java作业,制作一个8件拼图,我选择使用JButtons作为拼贴(不知道这是否可能)。我启动时按钮会以随机顺序出现,但我不知道如何在点击它们时让瓷砖移动。所以我想知道是否有人可以指出我正确的方向?我得出的结论是,我需要使用Actionlistners,并在这里看到一位老用户在每个按钮上得到Actionlistners的提示,但我在知道要写什么时遇到问题,并且做了我把它放在另一个班级?

非常感谢任何帮助!

到目前为止的产品:

Embedded a picture of the product so far

1 个答案:

答案 0 :(得分:1)

为了方便起见,您可以添加透明且无法点击的第九个按钮。每一个人都应该有他的身份,这也会告诉他的位置。

11 12 13
21 22 22
31 32 33

因此,对于每个按钮,您已经分配了他的随机数。就像你使用actionlistners来检测点击了哪个按钮一样。单击时,检查邻居按钮是否透明。如果透明,你会交换那些值,一个会变得可见,另一个是透明的,不可点击。

要获得按钮邻居,您可以使用+和 - 操作。

int leftNeighbour = id - 1;
int rightNeighbour = id + 1;
int topNeighbour = id - 10;
int bottomtNeighbour = id + 10;

我假设所有按钮都保存在一个数组中,所以你就是这样:

for(Button tempButton : Buttons)
{
   if(leftNeighbour > 0 && leftNeighbour == tempButton.id) //we check first if button id is OK, then we compere it with tempButtons id
   {
      int tempButtonValue = tempButton.value;
      tempButton.value = currentButton.value;
      currentButton.value = tempButtonValue ;
      makeButtonTransparent(tempButton);
      break; //we found over neighbor so we can stop for loop
   }
   //then you check conditions for other neighbor id's. Butt first condition is allays different
}

我希望我没有把它复杂化,但这是我在几分钟内得到的想法,当我在思考如何用按钮制作它。可能有一些更好的方法将ID设置为按钮,并检查它们是否是邻居。