Я пытаюсь создать человека в шахматной программе человека, используя java swing. У меня есть 64 jPanels
спина к спине (чередующиеся между серыми и белыми цветами фона) с jLabel
внутри каждого из них, которые я использую для отображения значков для фрагментов.Переменная для хранения объектов?
Прямо сейчас я пытаюсь сделать так, чтобы вы могли перемещать кусок с одной панели на другую, нажав панели в режиме суедейства. Я также использую массив значков, называемый «доска», чтобы сохранить позиции всех частей.
Пока программа с успехом дублирует значок первого щелкнула jPanel
ко второму (и делает соответствующее изменение в массиве доски). Тем не менее, у меня возникли проблемы с удалением значка с первого щелчка jPanel
, так что часть фактически «перемещается», а не просто дублирует.
Я знаю, что мне как-то нужно сохранить, какая панель изначально выбрана в какой-то переменной, а затем использовать эту переменную для установки значка оригинала jPanel
на null
при нажатии второй панели. Однако, не используя целое число для выбранной панели (1-64), а затем очень длинный оператор switch (switch (int), case 1: jPanel1.setIcon(null), case 2: jPanel2.setIcon(null))
и т. Д.), Я не знаю, какую переменную использовать.
Есть ли более простой способ сделать это (чем просто использовать оператор switch)? Как какая-то переменная объекта, я могу хранить объект swing внутри, а затем использовать позже, чтобы указать, какой объект хранится внутри? Кто-нибудь знает, как делать то, о чем я говорю? Помощь будет высоко оценена.
Мой код для обработки mouseclicked событий:
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;
}
}
См. Также этот [пример] (http://stackoverflow.com/a/2562685/230513) и [вариант] (http://stackoverflow.com/a/2563350/230513). – trashgod