在运行期间更改边框后,jLabel会恢复到其原始位置

时间:2019-08-08 09:52:26

标签: java

我正在尝试创建一个国际象棋游戏。我要突出显示为此选择的作品,我创建了两个边框,

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,则可以正常使用。我仍然无法弄清楚问题所在。

0 个答案:

没有答案