Dynamiczne tworzenie komponentu w aplecie

0

Witam,
Mam aplikacje, w ktorej po nacisnieciu guzika tworzy mi sie n nowych guzikow. Aby guziki byly widoczne po nacisnieciu tego pierwszego guzika korzystam z metody revalidate() i repaint(). Wszystko dziala jak nalezy. Problem pojawia sie gdy przerabiam aplikacje na applet. Wtedy po nacisnieciu guzika nie pojawiaja mi sie te nowe guziki. Jakies pomysly ? Dodam ze gdy otwieram aplet przez appletviewer to wszystko jest ok. Problem pojawia sie przy otwieraniu przez przegladarke.

Tutaj moj kod. http://4programmers.net/Pastebin/1996

Pozdrawiam

0

Generalnie jeżeli w Apletwiułerze działa ok a w przeglądarce nie tzn. że coś wywołujesz co wymaga aby aplet był podpisany. Niektóre funkcje w ogóle nie działają w apletach - apletwiułer to taki sandbox gdzie wszystko śmiga bo jest zaufane.

Oglądałem kod ale nie masz tam nic co by wskazywało, że odwołujesz się np. do zasobów dysku albo otwierasz gdzieś socket. Wszystkich klas nie dałeś więc nie wiem co jest w reszcie. Idz tą drogą. Umieść cały kod lub przedebuguj aplet w przeglądarce.

0

W kodzie, który wrzuciłeś nie ma repaint().

0

repaint() nie ma ,ale jak wpisze je w linie pod revalidate() to takze nie dziala.

0

Źle czytasz pliki graficzne, użyj metody getImage() http://docs.oracle.com/javase/7/docs/api/java/applet/Applet.html.

0

Zaraz to poprawie, ale nie powinno miec to wplywu na tworzenie komponentu.

0

Ma i to kolosalny, apletowi nie wolno czytać plików lokalnych.

0

Miales racje z tym getImage, dziala :) Dzieki za pomoc.

0

Jeszcze jedno pytanie. Poprzednio porownywalem ikonki guzikow za pomoca polecenia
WilkZajacAplet.pole[wspx][wspy].getIcon().toString().equals(new ImageIcon(puste).toString()) , ktore w tym przypadku sie nie sprawdza. Jak porownac te dwie ikonki ?

0

Imho, niepotrzebnie tworzysz wielokrotnie obiekty typu ImageIcon. W programie winny być instrukcje:

ImageIcon puste = new ImageIcon(getImage("Puste.gif"));
ImageIcon wilk = ...;

for(int i=0;i<wys;i++)
{
    for(int j=0;j<szer;j++)
    {
        WilkZajacAplet.pole[i][j] = new JButton(puste);
    }
}

A porównanie robisz tak:

WilkZajacAplet.pole[wspx][wspy].getIcon() == puste

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