Witam ponownie, na świąta byłem odcięty od komputerów,internetów i jdk-ów i dopiero teraz dziękuję za pomoc. ;-) Zwłaszcza przykład procodera pomógł mi dojść do tego co zamierzałem.
Niestety pojawił się kolejny problem, z wyświetlaniem komponentów. Może poradzicie coś i na to?
W obiektach klasy nazwanej tutaj jako A (dziedziczącej po JPanel) mam obrazek, a w konstruktorze tej klasy m.in. tablicę boolean. Klasa zawiera także metodę:
public void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, null);
this.repaint();
setVisible(czywidac());
}
public boolean czywidac(){
return Widocznosc[i];
}
W klasie B, podczas tworzenia nowych obiektów klasy A, ustawiłem im boolean=false, dlatego nie wyświetlają się.
W odpowiedniku klasy o nazwie Ref (u precodera) tak jak chciałem, zmieniam wartości boolean na true, jednak obrazki nie pojawiają się (mimo iż stan ten faktycznie zmienia się na true, sprawdzam w cmd oczywiście).
Czytałem trochę o metodach validate() czy revalidate() których tu nie zastosowałem, jednak niepokoi mnie następująca sprawa.
Gdy (testowo) podczas tworzenia obiektów klasy A w klasie B, ustawię im boolean na true, a następnie w klasie Ref zmieniam true na false, obiekty które na początku widać wszystkie, kolejno znikają. Czemu nie dzieje się odwrotnie?
Zauważyłem, że kiedy obiekt sprawdzi raz iż ma argument false w setVisible(), nigdy już nie wraca do metody paintComponent, dlatego przypuszczam, iż należy gdzieś dać polecenie a'la 'refresh' temu obiektowi aby sprawdził czy czasem już program nie wymaga od niego aby stał się widoczny. Jak to osiągnąć?