Java 使用ActionListener交换网格中的两个图标

Java 使用ActionListener交换网格中的两个图标,java,multidimensional-array,awt,actionlistener,chess,Java,Multidimensional Array,Awt,Actionlistener,Chess,我试图通过先点击一个方块,然后点击方块来移动它,从而将一个方块从网格中的一个方块移动到另一个方块 如何保存第一个图标的位置,然后与第二个图标交换 目前,我正在看这段代码,它只是将工件向左移动一个正方形: public void actionPerformed(ActionEvent e) { for ( x=0; x<8; x++) for( y=0; y<8; y++) { if(e.getSource() == board[x][y])

我试图通过先点击一个方块,然后点击方块来移动它,从而将一个方块从网格中的一个方块移动到另一个方块

如何保存第一个图标的位置,然后与第二个图标交换

目前,我正在看这段代码,它只是将工件向左移动一个正方形:

public void actionPerformed(ActionEvent e)  
{
for ( x=0; x<8; x++)
        for( y=0; y<8; y++) {
        if(e.getSource() == board[x][y])
        ((ChessSquare)e.getSource()).swap(board[x][y-1]);
    }
}
public void actionPerformed(ActionEvent e)
{
对于(x=0;x
  • 存储一个标志,指示这是“拖放”还是“拖放”1
  • 如果“拖动”,则存储原始坐标,并将标志更改为“下降”
  • 如果“drop”读取震源的坐标,请随意使用,并将标志设置回“drag”

  • 我的意思是像声明一个
    布尔拖动
    并根据需要将其设置为
    true
    /
    false
  • …存储坐标的最佳位置

    我会使用2个
    int
    属性,不过如果您想误用
    维度
    对象,只需一个就可以同时存储x&y两个单词

    …不,废话。使用mKorbel指示的客户端属性似乎更“整洁”。

    • 我们需要一个布尔标志来跟踪“单击”
    • 如果flag=false,则为第一次单击,否则为第二次单击(这是 我们将在其中执行交换)

      public void actionPerformed(ActionEvent e)
      {
      int xPos1、xPos2、yPos1、yPos2;
      如果(!标志)
      {
      
      对于(x=0;xWhere将是存储坐标的最佳位置?可能是最简单的方法,当然……,可能not@mKorbel嗯,…太好了!我错过的文档中的内容。:)应该非常复杂,请参阅我对另一个问题的评论中的代码,
      public void actionPerformed(ActionEvent e)  
      {
          int xPos1,xPos2,yPos1,yPos2;
          if(!flag)
          {
            for ( x=0; x<8; x++)
            {
                for( y=0; y<8; y++) 
                {
                  if(e.getSource() == board[x][y])
                  {
                    xPos1 = x; // Source icon cordinates.
                    yPos2 = y;
                    break;
                  }
                }
            }
            flag = true;
          }
          else
          {
            for ( x=0; x<8; x++)
            {
              for( y=0; y<8; y++) 
              {
                if(e.getSource() == board[x][y])
                {
                  xPos2 = x;  // Target icon cordinates.
                  yPos2 = y;
                  break;
                }
              }
            }
      
            // Swapping code add your version of this swapping code here.
            // Swap source with target.
            Icon temp = board[xPos1][yPos1]
            board[xPos1][yPos1] = board[xPos2][yPos2];
            board[xPos2][yPos2] = temp;          
            // ----------------- End Swap----------------  
      
            flag = false; // ready for next swap operation.
        }