Thread View: pl.comp.lang.java
3 messages
3 total messages
Started by Artur Tyloch
Mon, 01 Sep 1997 13:39
Ladowanie apletu
Author: Artur Tyloch
Date: Mon, 01 Sep 1997 13:39
Date: Mon, 01 Sep 1997 13:39
111 lines
3488 bytes
3488 bytes
Czesc
Pomagalem jednemu gostkowi z comp.lang.java.help przy jego aplecie.
Ale przy tym wymieklem...... i jednoczesnie zaciekawilo mnie to.
Moze sie to przydac podczas ladowania danych i inicjalizacji apleu, do
wyswietlenia
postepow w dzialaniu, pokazac uzytkownikowi, ze cos sie dzieje i ile juz
zostalo zrobione.
Chodzi o to aby pokazac napis typu "Calculating. Please wait..."
przed utworzeniem obiektu, ktore to zajmuje duzo czasu.
(Dobrze jakby cos sie dzialo przed wyswietleniem wynikow.)
Opis ponizej:
import java.awt.*;
import java.applet.*;
public class rand3 extends Applet
{
r one;
int when = 0; // init "when" data field to 0
// BTW: it is default value of int :)
public void init()
{
showStatus("Calculating. Please wait..."); // OK its work !!!
//Tu pokazuje w status line odpowiedni napis,
repaint(); //it call paint method but paint doesn't show
//repaint nie dziala, tak jak powinno, tj.
//poniewaz zmienna "when" ma wartosc zero, paint() powinno wyswietlic
napis:
// "Calculating. Please wait", jednak tak sie nie dzieje
// z tego co wiem paint dziala w osobnym watku i wykonywane jest gdy
zachodzi taka
// mozliwosc lub potrzeba (tu po wywolaniu metody repaint() )
// probowalem uspic biezacy watek apletu aby metoda paint() mogla zrobic
swoje
// lecz to nie dziala, trzeba zrobic to inaczej
//try {Thread.currentThread().sleep(100);}
//catch (Exception e) {}
one = new r();
repaint();
// tu tez ^ nie dziala
// {powinno pokazac informacje!!! o obliczeniach}
one.generate();
when = 1;
//Tu pokazuje w status line odpowiedni napis,
showStatus("Genetating DONE."); // OK its work !!!
// tu dziala
repaint();
}
public void paint(Graphics gr)
{
if (when == 1)
one.paint(gr);
else // when == 0 , its work faster; Do you know why...? 8-)
gr.drawString("Calculating. Please wait.", 20, 20);
}
}
// ta klasa tworzy jakies ogromne tablice, ktorych inicjalizacja zajmuje
tyle czasu
class r
{
public static double pseudor;
public int select, num, i;
public int allnumbers[] ;
public float percents[] ;
public int sums[] ;
public String s ;
r()
{
allnumbers = new int[1000000];
percents = new float[11];
sums = new int[1000000];
s = new String();
}
public void generate()
{
for(i=0; i<1000000; i++)
{
pseudor = Math.random()*10;
select = (int) pseudor;
allnumbers[i] = select + 1;
}
for(i=0; i<1000000; i++)
{
num = allnumbers[i];
sums[num-1] += 1;
}
for(i=1; i<11; i++)
percents[i] = (float) sums[i-1] / 10000;
}
public void paint(Graphics g)
{
for (i=1; i < 11; i ++)
{
s = "Number " + i + " was selected "
+ percents[i-1] + " percent of the time";
g.drawString(s, 20, 20 + i * 20);
}
}
}
Re: Ladowanie apletu
Author: Adam Lejman
Date: Mon, 01 Sep 1997 18:13
Date: Mon, 01 Sep 1997 18:13
33 lines
1656 bytes
1656 bytes
Artur Tyloch <arturt@priv.onet.pl> napisał(a) w artykule <340AC58A.7576B174@priv.onet.pl>... > Czesc > Pomagalem jednemu gostkowi z comp.lang.java.help przy jego aplecie. > Ale przy tym wymieklem...... i jednoczesnie zaciekawilo mnie to. > > Moze sie to przydac podczas ladowania danych i inicjalizacji apleu, do > wyswietlenia > postepow w dzialaniu, pokazac uzytkownikowi, ze cos sie dzieje i ile juz > zostalo zrobione. > > Chodzi o to aby pokazac napis typu "Calculating. Please wait..." > przed utworzeniem obiektu, ktore to zajmuje duzo czasu. > (Dobrze jakby cos sie dzialo przed wyswietleniem wynikow.) Zgodnie ze specyfikacja zanim cokolwiek aplet potrafi pokazac muszi zostac ukonczone wykonywanie metod init() i start(). Wczesniej nie ma mowy o dostepie do kontekstu graficznego. Nie dotyczy to konsoli i na niej mozna obserwowac postepy wykonywania init() i star(). W Twoim przypadku rozwiazaniem moze zaimplementowanie Runnable, przerzucenie calego kodu z init do run() i w start() uruchomienie codu z run(). Pozdrawiam Adam Lejman al@4u.net
Re: Ladowanie apletu
Author: Artur Tyloch
Date: Mon, 01 Sep 1997 19:22
Date: Mon, 01 Sep 1997 19:22
49 lines
2196 bytes
2196 bytes
Adam Lejman wrote: > Artur Tyloch <arturt@priv.onet.pl> napisał(a) w artykule > <340AC58A.7576B174@priv.onet.pl>... > > Czesc > > Pomagalem jednemu gostkowi z comp.lang.java.help przy jego aplecie. > > Ale przy tym wymieklem...... i jednoczesnie zaciekawilo mnie to. > > > > Moze sie to przydac podczas ladowania danych i inicjalizacji apleu, > do > > wyswietlenia > > postepow w dzialaniu, pokazac uzytkownikowi, ze cos sie dzieje i ile > juz > > zostalo zrobione. > > > > Chodzi o to aby pokazac napis typu "Calculating. Please wait..." > > przed utworzeniem obiektu, ktore to zajmuje duzo czasu. > > (Dobrze jakby cos sie dzialo przed wyswietleniem wynikow.) > > Zgodnie ze specyfikacja zanim cokolwiek aplet potrafi pokazac > muszi zostac ukonczone wykonywanie metod init() i start(). Wczesniej > nie Ze init to slyszalem... to i start tez.....!!! > ma mowy o dostepie do kontekstu graficznego. Nie dotyczy to konsoli i > na > niej mozna obserwowac postepy wykonywania init() i star(). > > W Twoim przypadku rozwiazaniem moze zaimplementowanie Runnable, > przerzucenie > calego kodu z init do run() i w start() uruchomienie codu z run(). Takie rozwiazanie tez jako pierwsze mi sie nasunelo... a skoro metoda start() tez nie madostepu do kontekstu graficznego to pozostaje to jedynym rozwiazaniem. (Chyba, ze zrobic podklase Thread i z tym kombinowac, lecz w tym przypadku to, to samo) Pozdrawiam Artur > > > Pozdrawiam > > Adam Lejman > al@4u.net >
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads