Avatar billede trp79 Nybegynder
24. juli 2003 - 23:55 Der er 5 kommentarer og
1 løsning

opdatering af GUI (Swing)

Hejsa,
Jeg har en gui, hvor jeg gerne vil have opdateret en JLabel og en JProgressBar efterhånden som noget kode udføres. Som det er nu ser noget af min kode sådan ud:

a++;
jProgressBar.setValue(a);
jLStatus.setText("Uploader firmaer");
output = new ObjectOutputStream (socket.getOutputStream());
output.writeObject(firmaListe);
output.flush();
jLStatus.setText("Firmaer uploadet");

a++;
jProgressBar.setValue(a);
jLStatus.setText("Uploader kontaktperson");
output = new ObjectOutputStream (socket.getOutputStream());
output.writeObject(kPListe);
output.flush();
jLStatus.setText("Kontaktperson uploaded");

a++;
jProgressBar.setValue(a);
jLStatus.setText("Uploader omsætninger");
output = new ObjectOutputStream (socket.getOutputStream());
output.writeObject(omsListe);
output.flush();
jLStatus.setText("Omsætninger uploaded");

Desværre opdateres guien ikke løbende men får kun "start status" og "slut status", dvs i det udklip jeg har postet bliver skærmen ikke opdateret med fx ("Uploader kontaktperson"); og jProgressBar.setValue, kan man selvfølgelig heller ikke se bliver udført i det "midterste" kodestykke.

Er der nogen der har en ide til hvordan jeg kan få guien opdateret inden en ny funktion udføres?
Avatar billede casualty Nybegynder
25. juli 2003 - 00:02 #1
prøv i din frame med

this.update(this.getGraphics);

alternativt kan man vel sige minJlabel.updateUi();

Men jeg ved ikke om det spiller når man ikke bruger tråde??
Avatar billede casualty Nybegynder
25. juli 2003 - 00:04 #2
Går i seng nu...Håber at du får det til at virke ;)

Mvh Casualty
Avatar billede arne_v Ekspert
25. juli 2003 - 07:40 #3
Du kunne starte med at kalde repaint efter hver gang du har opdateret noget.
Avatar billede trp79 Nybegynder
25. juli 2003 - 09:28 #4
Det blev til en gang:
jLStatus.updateUI();
jProgressBar.updateUI();

Jeg har kun sendt de to elementer over i en klasse og ikke hele framen (men det skrev jeg jo ikke noget om i spg)

Tak for hjælpen :o)
mvh
Torben
Avatar billede casualty Nybegynder
25. juli 2003 - 11:23 #5
Tak for points ;)
Avatar billede trp79 Nybegynder
25. juli 2003 - 13:48 #6
Der var jeg alt for hurtig ude, den opnår stadig ikke nogle tilstande udover den sidste (dvs. for jLStatus vedkommende står der "Uploading gennemført") :o(
Jeg synes ellers at jeg går med livrem og seler ved at gøre det på denne måde:

Klient(String serverAdr, String brugernavn, String password, JLabel jLStatus, JProgressBar jProgressBar, JDialog up)
{
    this.brugernavn = brugernavn;
    this.password = password;
    this.jLStatus = jLStatus;
    this.jProgressBar = jProgressBar;
    this.up = up;
        ...
}
...
metode..(...)  //kaldes ved tryk på en JButton
{       
a++;
jProgressBar.setValue(a);
jLStatus.setText("Uploader budgetter");
jLStatus.updateUI();
up.repaint();
output = new ObjectOutputStream (socket.getOutputStream());
output.writeObject(budgetListe);
output.flush();
jLStatus.setText("Budgetter uploadet");
jLStatus.updateUI();
jProgressBar.updateUI();
up.repaint();

a++;
jProgressBar.setValue(a);
jProgressBar.updateUI();
jLStatus.setText("Uploadering gennemført");
up.repaint();
a++;
jProgressBar.setValue(a);
jProgressBar.updateUI();
up.repaint();
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