Avatar billede shadowdance Nybegynder
22. november 2004 - 01:15 Der er 3 kommentarer og
1 løsning

Komponenterne repainter ikke

Hejsa,

jeg har lavet en klasse der scanner et bibliotek rekursivt for filer. Hver gang den tager næste bibliotek i højeste niveau sender den besked til en klasse der extender JFrame, og som viser en progress bar, dvs hvor langt den er kommet.

Når jeg tester klassen normalt, kører det fint og progress baren kører som forventet.

Når jeg imidlertid implementerer den dybere inde i et større program, opdaterer grafikken ikke. Dvs selve framen kommer til syne, men komponenterne kommer ikke til syne. I baggrunden skanner den anden klasse for filer, så jeg går ud fra, at den er for presset til at opdatere grafikken.

Jeg har forsøgt at kalde repaint() hver gang den giver besked til progress baren, men det hjælper ikke... hvad nu?
Avatar billede kalp Novice
22. november 2004 - 08:43 #1
hvad hvis du kalder en  jProgressBar.getValue() metode?
Avatar billede mhj28 Nybegynder
22. november 2004 - 12:28 #2
har du prøvet jProgressBar.validate();

og opdatere du med SwingUtilities som dette eksempel:

Runnable doWorkRunnable = new Runnable() {
  public void run() {   
      jProgressBar.setValue(++value);
  }
};
SwingUtilities.invokeLater(doWorkRunnable);
Avatar billede shadowdance Nybegynder
24. november 2004 - 14:12 #3
mhj28 >>> Med runnable laver jeg en tråd... men jeg har jo i forvejen programmeret en klasse der extender JFrame... er det her, jeg skal lave om til at den extender Runnable eller hvordan? Jeg er lidt forvirret...
Avatar billede mhj28 Nybegynder
24. november 2004 - 15:18 #4
du laver en metode i den klasse som extender JFrame f.eks.

public void opdateProgressBar(int value) {
  Runnable doWorkRunnable = new Runnable() {
    public void run() { 
        jProgressBar.setValue(value);
    }
  };
  SwingUtilities.invokeLater(doWorkRunnable);
}

Denne metode kalder du så hvergang du skal have opdateret din ProgressBar.
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