Image i MediaTracker...

0

Chcę wczytać Image i wyświetlić go na Panelu. W czasie wczytywania chcę, żeby
program działał normalnie, a zaraz po wczytaniu żeby odpowiedni obrazek
wyświetlił się w JPanel.

No i cały problem tkwi w tym, że chciałbym wywołać repaint panelu w momencie gdy
MediaTracker zakończyło pobieranie obrazka. No i teraz nie wiem jak to zrobić.

Wiem, że mógłbym np. wrzucić to do nowego wątku, tam dać mediaTracker.waitForAll(). Tylko czy nie ma prostszego sposobu? Chyba jest jakiś lepszy sposób by w chwili zakończenia wczytywania obrazka wywołać repaint JPanela?

0

myślę że nie musisz wywoływać repaint()
ja zrobiłem następująco:
-wczytaj obrazek przez MediaTrackera

  • a następnie:
    Graphics gDC=panel.getGraphics(); //panel to twój JPanel
    gDC.drawImage(img,0,0,400,400,null); //img to załadowany obrazek
    gDC.dispose(); //zwolnienie wykreślacza

działało u mnie w czasie rzeczywistym.....;)
oczywiście jeśli chcesz aby obrazek został na panelu "na dłużej" musisz umieścić go w metodzie paint()

0

myślę że nie musisz wywoływać repaint()
ja zrobiłem następująco:
-wczytaj obrazek przez MediaTrackera

  • a następnie:
    Graphics gDC=panel.getGraphics(); //panel to twój JPanel
    gDC.drawImage(img,0,0,400,400,null); //img to załadowany obrazek
    gDC.dispose(); //zwolnienie wykreślacza

działało u mnie w czasie rzeczywistym.....;)
oczywiście jeśli chcesz aby obrazek został na panelu "na dłużej" musisz umieścić go w metodzie paint()

0

No ale ja nie chcę, żeby aplikacja czekała na wczytanie tego obrazka, bo ten obrazek się ciągnie po sieci, więc to trochę trwa. Niedawno wyczytałem, że do takich rzeczy to trzeba wzorzec obserwator zastosować, ale nie wiem jak :/. Na razie działa bo to zrobiłem byle by było, ale powinienem porządniej.

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