🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.java
3 messages
3 total messages Started by Artur Tyloch Mon, 01 Sep 1997 13:39
Ladowanie apletu
#931
Author: Artur Tyloch
Date: Mon, 01 Sep 1997 13:39
111 lines
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
#932
Author: Adam Lejman
Date: Mon, 01 Sep 1997 18:13
33 lines
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
#933
Author: Artur Tyloch
Date: Mon, 01 Sep 1997 19:22
49 lines
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