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.
}