Я работаю с IDE Netbeans в Java.
У меня есть форма с одним JPanel.
Каждый JPanel имеет gridLayout 3x3, и в каждом месте есть изображение, представляющее число [0,1,2,3,4,5,6,7,8] (изображение создается с использованием пользовательского класса, а не только подгонки изображение в лаборатории).
Я хочу иметь возможность обмениваться двумя изображениями на панели, когда пользователь щелкает по ним (первый щелчок: бездействие, второй щелчок: переключение двух изображений, встроенных в компоненты jPanel).
Я уже создал функцию exchangeComponents и с тестовым кодом (например:
exchangeComponents (0,8,jPanel1)
корректно обменивается изображениями, расположенными в позиции 1 (1-й ряд, 1-й столбец) и в позиции 2 (3-й ряд, 3-й столбец).
Созданная функция выглядит следующим образом:
public void exchangeComponents(int component1,int component2,JPanel jpanel){
try{
Component aux1 = jpanel.getComponent(component1);
Point aux1Loc = aux1.getLocation();
Component aux2 = jpanel.getComponent(component2);
Point aux2Loc = aux2.getLocation();
aux1.setLocation(aux2Loc);
aux2.setLocation(aux1Loc);
}
catch (java.lang.ArrayIndexOutOfBoundsException ex){ /* error! bad input to the function*/
System.exit(1);
}
}
Полагаю, мне нужно событие, которое вызывает функцию exchangeComponents (), когда пользователь нажимает на одно из изображений на jPanel1, но как мне это сделать? а как проверить какие компоненты (изображения) выбрал пользователь?
Я просто знаю, что когда я создаю кнопку, если нажать на нее (из IDE) событие, подобное
private void button1ActionPerformed(java.awt.event.ActionEvent evt) {
// some code..
}
создан и код, который я заполняю, выполняется.
Заранее благодарим за любую подсказку.