我正在尝试创建一个国际象棋游戏。我要突出显示为此选择的作品,我创建了两个边框,
LineBorder border = new LineBorder(new Color(0,0,0),1);
LineBorder noborder = new LineBorder(new Color(0,0,0),0);
现在,在标签的“鼠标单击”事件中,我编写以下内容以显示其被选中,
for (int i = 0; i < arr.length; i++) {
arr[i].setBorder(noborder);
}
bp1.setBorder(border);
这里bp1
是Black Pawn 1,而arr
是所有(32)个标签的数组。因此,我将其余部分的边框设置为noborder
,只需取消选择先前选择的标签即可。
现在,在chessboard
标签的Mouse Clicked事件中,我写
for(int i=0;i<arr.length;i++){
if(arr[i].getBorder()!=noborder){
int x=evt.getX();
int y=evt.getY();
x=(x/60)*60;
y=(y/60)*60;
arr[i].setLocation(x, y);
}
}
用60除以60乘以将这些块放置在单击鼠标的正方形中。由于棋盘的大小为480x480
,而所有棋子的大小均为60x60
。
现在,“问题”,“标签”将移动到正确的位置,但是,当我选择另一块时,我先前移动的“标签”很快又恢复到其原始位置。 例如,如果我移动了一个黑色的棋子,然后在一个主教上单击以选中它,则在主教的“鼠标单击”上,黑色的棋子会恢复到其原始位置。
P.S。我正在使用netbeans。
编辑:使用边框时,如果我将border
更改为Bevel LOWERED,将noborder
更改为Bevel RAISED,则可以正常使用。我仍然无法弄清楚问题所在。