Wyświetlanie paneli z HashMapy

0

Hej,

mam zrobić żeby losowo podświetlało mi te panele. Tzn. nie do końca losowo tylko wcześniej zrobiłem, że leciały po kolei po indeksie tablicy a teraz chcę żeby pobierały dane z hashmapy tylko dostaję błąd nulla pod wskaźnikiem.

Mógłby ktoś rzucić okiem na ten projekt ? (projekt robiony w NetBeans 8)

Pozdrawiam,
h141

0

Źle iterujesz elementy hashmapy, powinno to wyglądać tak:

for (JPanel p : mapa.values()) {
    p.setBackground(tlo);
}

Poza tym panele możesz wrzucać do listy zamiast do HashMapy:

ArrayList<JPanel> jPanels = new ArrayList<>();
jPanels.add(jPanel1);
jPanels.add(jPanel2);
jPanels.add(jPanel3);

Poczytaj sobie też o pęfli for dla kolekcji, ponieważ źle jej używasz:
http://javastart.pl/static/podstawy-jezyka/petla-for-each/

0

Właśnie za zadanie miałem zrobić w hashmapie a nie w tablicy (w tablicy bym sobie poradził :))

Dzięki za pomoc już się biorę za czytanie.

OK przeczytane :P za wiele tego nie było.

Nawet po poprawieniu pętli program nadal zawraca błąd NULLa.

0

Taka konstrukcja, którą napisałeś jest błedna dla HashMapy< String, JPanel >:

for (JPanel p : mapa.values()) {
    mapa.get(p).setBackground(tlo);
}

To co tu robisz to przechodzisz po wszystkich panelach pobranych z hashmapy i w kazdej iteracji probujesz wyciagnac z mapy wartość (obiekt JPanel), podając jako klucz obiekt klasy JPanel. Klucze u Ciebie to Stringi, dlatego aby pobrać coś z mapy powinieneś użyć mapa.get("1").

1
hornet141 napisał(a):

Właśnie za zadanie miałem zrobić w hashmapie a nie w tablicy (w tablicy bym sobie poradził :))

Jeśli HashMap to tak:

HashMap<String, JPanel> map = new HashMap<String, JPanel>();

map.put("1", jPanel1);
map.put("2", jPanel2);
map.put("3", jPanel3);
map.put("4", jPanel4);
map.put("5", jPanel5);
map.put("6", jPanel6);
map.put("7", jPanel7);
map.put("8", jPanel8);
map.put("9", jPanel9);
map.put("10", jPanel10);

for (JPanel p : map.values()) {
    p.setBackground(background);
}
0

Myślałem, że mam przejść po danych a nie kluczach w hashmapie i po kolei je wyciągam ?

Powiedz mi jeszcze czy dobrze rozumiem. Nazwy kluczy nie mają znaczenia i przypadkowo wpisałeś kolejne cyfry ?

Poprawiłem wedle zaleceń, jest lepiej ale teraz program się zawiesza po pierwszym (tak się domyślam) wykonaniu.

W załączniku jest poprawiony projekt.

1

map.keySet() daje klucze, a map.values() daje wartości.

Iterowanie po keySet nie ma sensu, jeśli chcesz się tylko dobrać do values.

1 użytkowników online, w tym zalogowanych: 0, gości: 1