Dodaj kartkę Dodaj bana
Powód wlepienia kartki
Wybierz wątek docelowy z listy lub wpisz jego ID
  • Anonim

    Witam! mam problem: mam program który rysuje wykres sinusa w 2D i po naciśnięciu JButtona powinien sie przerysowywać. Lecz actionPerformed() omija wszystkie repainty() :/ i wykonuje na końcu (po zakończeniu actionPerformed()) jednego repainta(). Co robić??
    HELP :(
    pozdro
    B.L.
  • Maciek Makowski

    Co to znaczy "omija repainty()"? Nie wykonuje wywołania metody repaint()? Bo jeśli problem w tym, że odrysowuje dopiero po zakończeniu actionPerformed(), to nie ma się co dziwić -- repaint() dodaje jedynie podany prostokąt do listy regionów do odrysowania, a faktyczne rysowanie odbywa się dopiero po obsłużeniu wszystkich oczekujących zdarzeń.
  • Anonim

    no nie wykonuje funckji repaint() :(
    chodzi o to że: mam JButtona którego wciskam. Mam w środku actionPerformed() pętlę for która powinna wykonywać określoną ilość razy repaint(). Problem w tym że nie wykonuje tego repainta(). Wykonuje go dopiero raz na końcu. Jak to poprawić ?? any ideas??
  • Maciek Makowski

    Skad wiesz, ze repaint() nie jest wywolywana?
  • Anonim

    bo w środku painta() dołączyłem: System.out.println("paint()");
    i słowo paint() wypisuje sie raz na początku i raz na końcu :(
  • Maciek Makowski

    No i co w zwiazku z tym? Dlaczego mialoby sie wypisywac cos, co wpisales do paint() wtedy, kiedy wywolujesz repaint()?
  • Anonim

    no w funkcji paint() (która sie wywołuje poprzez repaint) wpisałem teskt "paint()" ale równie dobrze mogłem wpisać "rysuje". i wyświetla sie to tylko raz na początku i raz na końcu...
  • Maciek Makowski

    Czyli zdefiniowales repaint() tak, zeby wywolywalo paint()?
  • Anonim

    no tak bo repaint() z zasady wywoluje paint(). No i jak teraz zrobić wywolywanie paint() (poprzez repaint()) w actionPerformed?? :/
  • Maciek Makowski

    Właśnie nie ma takiej zasady, która mówi, że repaint() ma wywoływać paint(). Co więcej, jest zasada, wedle której nie należy ręcznie wywoływać paint() -- polecam lekturę dokumentacji API.

    A w ogóle to Grono nie jest chyba dobrym miejscem na tego typu techniczne dyskusje, bo nawet nie mozna wkleić zformatowanego kodu. Lepiej zapytać na http://saloon.javaranch.com/cgi-bin...
  • Lipson Earl Grey

    wywolanie repaint() pwoduje jedynie dodanie żądania odmalowania komponentu do kolejki zdarzeń, a jesli nastepuje to wewnatrz actionPerformed() to napewno nie zostanie wywolane przed zakonczeniem obslugi tej metody, napewno nastapi pozniej z tego powodu ze robic ma to ten sam watek ktory wywoluje actionPreformed(). To wyjasnia dlaczego nie jest komponent odmalowywany podczas tej petli wewnatrz actionPerformed().Dodatkowo, w przypadku kiedy do kolejki zdarzen wrzucane jest zadanie odmalowania jakiegos kawalka okna a jest juz w kolejce zadanie odmalowania ktore zawiera dany fragment to nowe zostanie zignorowane. To wyjasnia dlaczego paint jest odpalony tylko raz.
  • Lipson Earl Grey

    polecam zapoznac sie z tym:

    http://java.sun.com/products/jfc/ts...