Mam dość złożony problem.
Mam dwa ComboBoxy, gdzie jeden jest zależny od drugiego (zmieniając wartość w pierwszym, zmieniają się wartości drugiego).
- combobox to lista pionków, które posiadam (nr indeksów tablicy stringów).
- ComboBox to lista pól, na których może postawić mój wybrany w 1. comboBoxie pionek.
No i mam button, który wykonuje ruch w mojej grze (przestawia wybrany pionek w wyznaczone miejsce).
Problem pojawia się po 1. ruchu. Program się crashuje...
Wiem w czym problem, ale nie wiem jak go rozwiązać :/
Dzieje się tak dlatego, że po każdym ruchu, komendą removeAllItems() kasuję elementy 1. Comboboxa, a następnie szukam ich na nowo ( znajdzPionki() ), po to by z listy usunąć index z którego przestawiłem pionek do innego.
Jednocześnie w ActionEvencie mam akcje do tego ComboBoxa (pionki). Metoda poleRuchu() kasuje przy każdej zamianie w 1. Comboboxie stare pole i szuka odpowiednich dla tej pozycji.
public void actionPerformed(ActionEvent event) {
Object akcja = event.getSource();
if(akcja == bRuch)
{
String pozycja = pionki.getSelectedItem().toString();
int i = (int)(pozycja.charAt(1)-49);
int j = (int)(pozycja.charAt(4)-49);
String pozycja2 = dobrePola.getSelectedItem().toString();
int ii = (int)(pozycja2.charAt(1)-49);
int jj = (int)(pozycja2.charAt(4)-49);
plansza[i][j] = pustePola;
plansza[ii][jj] = pionkiGracza;
pokazPlansze();
znajdzPionki();
poleRuchu();
}
else if(akcja==pionki)
{
poleRuchu();
}
}
Komunikat błędu:
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Co zrobić by pogodzić tą sytuację ?