Как вызвать функцию, когда я нажимаю на jPanel (Java)?

Я работа с 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-й столбец).

Функция a creted выглядит следующим образом:

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..
}

и выполняется код, который я заполняю.

Заранее спасибо за любую подсказку.

5
задан dragonmnl 1 April 2012 в 18:25
поделиться