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