Java 变量来存储对象?

Java 变量来存储对象?,java,swing,icons,jpanel,mouse-listeners,Java,Swing,Icons,Jpanel,Mouse Listeners,我正在尝试使用JavaSwing创建一个人对人的国际象棋程序。我有64个jpanel背靠背(在灰色和白色背景色之间交替),每个面板内都有一个jLabel,我用它来显示这些作品的图标 现在,我正试图使它,使您可以移动一块从一个面板到另一个通过点击面板在succession。我还使用一个名为“board”的图标数组来存储所有工件的位置 到目前为止,程序成功地将第一个单击的jPanel图标复制到第二个(并对电路板阵列进行相应更改)。然而,我在从第一次点击的jPanel中移除图标时遇到了问题,因此该片段

我正在尝试使用JavaSwing创建一个人对人的国际象棋程序。我有64个
jpanel
背靠背(在灰色和白色背景色之间交替),每个面板内都有一个
jLabel
,我用它来显示这些作品的图标

现在,我正试图使它,使您可以移动一块从一个面板到另一个通过点击面板在succession。我还使用一个名为“board”的图标数组来存储所有工件的位置

到目前为止,程序成功地将第一个单击的
jPanel
图标复制到第二个(并对电路板阵列进行相应更改)。然而,我在从第一次点击的
jPanel
中移除图标时遇到了问题,因此该片段实际上“移动”,而不仅仅是复制

我知道我需要在某种变量中存储最初选择的面板,然后在单击第二个面板时使用该变量将原始
jPanel
的图标设置为
null
。然而,除了为所选面板(1-64)使用一个整数,然后使用一个非常长的switch语句(
switch(int),案例1:jPanel1.setIcon(null),案例2:jPanel2.setIcon(null))
,我不知道使用哪种变量

有没有比使用switch语句更简单的方法?像某种对象变量,我可以在里面存储一个swing对象,然后用它来命令里面存储的任何对象?有人知道我在说什么吗?非常感谢您的帮助

我处理鼠标单击事件的代码:

private void jPanel1MouseClicked(java.awt.event.MouseEvent evt) { 

    if (pieceSelected == false) 
    { 
        pieceSelection = board[0][0]; 
        pieceSelected = true; 
    } else //if a piece was selected when this panel was clicked 
    { 
        //change this panel's icon to the icon of the first panel 
        jLabel1.setIcon(pieceSelection); 
        board[0][0] = pieceSelection; 

        //change the icon of the first square clicked to null 
        //the following part is the part i'm having trouble with 
        //board[last x coordinate][last y coordinate] = null; 
        //lastjPanel.setIcon(null) 

        pieceSelected = false; 
    } 
}

您应该制作一个大小为[8][8]的JPanel二维数组,例如

JPanel[8][8] chessBoard = ...
而不是

JPanel jPanel1...
JPanel jPanel2...
JPanel jPanel3...
JPanel jPanel4...
...
然后,您可以通过编程方式以相同的方式访问所有JPanel,而无需将任何代码编写64次。您可以进行迭代、搜索等操作。

另请参见此和。