Avatar billede casualty Nybegynder
06. november 2002 - 21:49 Der er 5 kommentarer og
1 løsning

jProgressBar...Hvordan?

private String loadWebPage(String pageurl)
    {
        try
        {
            URL url=new URL(pageurl); //URL to the webpage

            HttpURLConnection httpURL=(HttpURLConnection) url.openConnection();

            InputStream in=httpURL.getInputStream(); //get input stream from URL

            byte webData[]=new byte[8192]; //allocate enough space for the complete page.

            StringBuffer page = new StringBuffer();
            int data=0;

            while(data!=-1)
            {
                data=in.read();
                if(data!=-1)
                {
                    page.append((char)data);
                    tal = tal+1;
                    jProgressBar1.setValue(tal);
                }
            }
           
            in.close();
            return page.toString();
        }
        catch (MalformedURLException e)
        {
            e.printStackTrace(System.out);
            return "Der er en fejl i adressen : " + str;
        }
        catch (IOException e)
        {
            e.printStackTrace(System.out);
            return "Der er en fejl i adressen : " + str;
        }
    }

---------------------------------------------------------
Hvordan gør man dette rigtigt?
Min jProgressBar tæller ganske rigtig op....Men den viser først hvor meget idet at al data er loadet ind???

Jeg er ikke så meget interresseret i funktionen med at dividere mængden af data med længden på min jProgressBar,
Det jeg gerne vil vide er hvordan man kan få den til at køre imens dataene loades ind....

Den udfører jo først handlingen når al data er loadet ind...????

Mvh Casualty
Avatar billede soreno Praktikant
06. november 2002 - 22:42 #1
du kan lave en repaint,
så vidt jeg husker så er det
super.repaint();

altså:
if(data!=-1)
{
  page.append((char)data);
  tal = tal+1;
  jProgressBar1.setValue(tal);
  super.repaint();
}
Avatar billede carstenknudsen Nybegynder
07. november 2002 - 09:37 #2
Din beregning (downloading) bruger den tråd der
står for opdatering af gui'en. Jeg går du fra
at der er en knap eller lign. der aktiveres og
din metode kaldes. Du skal have en tråd der opdaterer
din JProgressBar.
Avatar billede casualty Nybegynder
07. november 2002 - 11:27 #3
Hvordan kunne sådan én se ud?

Kan du komme med et eksempel...
Det er rigtig nok at Jeg aktiverer funktionen via en knap...
Avatar billede carstenknudsen Nybegynder
07. november 2002 - 11:54 #4
Definer en boolean stop i din klasse der bliver sat
til false når ud er færdig med at læse filen.
Opret en (f.eks.) int der angiver din værdi
der viser hvor langt beregningen er nået.
I dit eksempel er det variable tal. Denne
skal dog defineres udenfor metoden i klassen,
så den kan læses af indre klasser.
Så gør følgende før din løkke der læser/beregner.
new Thread( new Updater(jProgressBar1) ).start();
Den bruger den indre klasse Updater defineret her:

private class Updater implements Runnable {
private JProgressBar bar;
public Updater(JProgressBar bar ) {
this.bar = bar;
}
public void run() {
while ( ! stop ) {
bar.setValue(tal);
try {Thread.sleep(100);} catch (InterruptedException ie) {}
}
}
}
Avatar billede casualty Nybegynder
07. november 2002 - 18:56 #5
Prøver senere er i skole nu...Men tak for det....
Avatar billede casualty Nybegynder
09. november 2002 - 22:17 #6
Oki..Tak for det :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester