/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Opdatering af GUI i en eventhandler
Fra : Karl Peder Olesen


Dato : 29-04-02 23:16

Hej

Jeg sidder med et problem (eller "opgave" hvis man ikke er til
"problemer": Jeg har et JTree, som viser informationer fra en
database. For ikke at loade alt på en gang (pga. tidsforbrug), så
gøres det fra en eventhandler, der kaldes umiddelbart før en node i
træet "foldes ud".

I eventhandleren vil jeg gerne opdatere en JLabel, som indeholder en
statusmeddelelse (i stil med "Please wait...").

Problemet er så at denne label først bliver repaint'et, når den
eventhandler, der læser fra databasen, er afslutttet. Og så er det
ligesom for sent. Alt hvad jeg kan læse mig til (Java Tutorial og Java
API) tyder på at det er standard opførsel (noget med at repaints sker
på event "tråden", som jo allerede er "i gang") - men er der en udvej?

Lige lidt kode:
---------------------
private void TreeWillExpand(ExpansionEvent evt) throws ...
{
// Called just before a tree node is expanded:
if (<children not already read from DB>)
{
StatusLabel.setText("Updating from DB. Please Wait");
// <ERROR: The text is not updated properly
<code to read from database - takes some time>
StatusLabel.setText("OK");
}
}

Jeg håber meget at der findes en løsning; for at lade en bruger sidde
og vente uden indikation af at der sker noget synes jeg ikke er en
option.

mvh
Karl Peder Olesen


 
 
Anders Jørgensen (01-05-2002)
Kommentar
Fra : Anders Jørgensen


Dato : 01-05-02 20:10

Hej Karl

Uden at have studeret dit problem nærmere, skulle jeg mene at du "bare" kan
smide din proces, der hente data op nede fra databasen, over i en ny tråd.
.... så det kommer til at se ud noget a la:

[Event]
|
V
[start tråd til db] -> [henter fra db]
| |
V V
[skriver "Please wait"]

.... men være opmærksom på, at du let kan rende ind i nogle synkroniserings
problemer, når den er færdig med at hente fra db og du skal have lukket
"please wait"!

Med venlig hilsen

Anders Jørgensen

P.S. det er som regel en god idé at sende tunge ting om i en tråd, hvis de
er startet af en event!

"Karl Peder Olesen" <kpo@mail1dotstofanetdotdk> skrev i en meddelelse
news:3ccdc3c8.26516208@news.stofanet.dk...
> Hej
>
> Jeg sidder med et problem (eller "opgave" hvis man ikke er til
> "problemer": Jeg har et JTree, som viser informationer fra en
> database. For ikke at loade alt på en gang (pga. tidsforbrug), så
> gøres det fra en eventhandler, der kaldes umiddelbart før en node i
> træet "foldes ud".
>
> I eventhandleren vil jeg gerne opdatere en JLabel, som indeholder en
> statusmeddelelse (i stil med "Please wait...").
>
> Problemet er så at denne label først bliver repaint'et, når den
> eventhandler, der læser fra databasen, er afslutttet. Og så er det
> ligesom for sent. Alt hvad jeg kan læse mig til (Java Tutorial og Java
> API) tyder på at det er standard opførsel (noget med at repaints sker
> på event "tråden", som jo allerede er "i gang") - men er der en udvej?
>
> Lige lidt kode:
> ---------------------
> private void TreeWillExpand(ExpansionEvent evt) throws ...
> {
> // Called just before a tree node is expanded:
> if (<children not already read from DB>)
> {
> StatusLabel.setText("Updating from DB. Please Wait");
> // <ERROR: The text is not updated properly
> <code to read from database - takes some time>
> StatusLabel.setText("OK");
> }
> }
>
> Jeg håber meget at der findes en løsning; for at lade en bruger sidde
> og vente uden indikation af at der sker noget synes jeg ikke er en
> option.
>
> mvh
> Karl Peder Olesen
>



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408524
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste