Avatar billede kristianp Nybegynder
31. august 2001 - 13:22 Der er 4 kommentarer og
1 løsning

JDialog klar til carbage collection ??

Jeg har nogel JDialog\'s, de kan lukkes med x i øverste højre hjørne, og jeg har sat
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
men yderliger har jeg en close knap, i dens actionPerformed kalder jeg dispose(), men jeg er lidt usikker på hvad den dispose og egentlig gør, jeg vil opnå at objectet er klar til at blive smidt væk når jeg har lukket det, men er det nok med dispose ???
Avatar billede disky Nybegynder
31. august 2001 - 13:24 #1
sæt referencen til objektet til null så kan GC\'en se at den er fri.
Avatar billede logical Nybegynder
31. august 2001 - 13:36 #2
Enhver komponent som har et tilhørende native vindue, dvs. alt nedarvet fra java.awt.Window, herunder JFrame og JDialog bruger nogle resourcer til at tegne deres vinduer med.

Når du kalder dispose, fortæller du det implicit det native system, at du ikke ønsker at bruge dens resourcer mere, og de kan derved frigøres.

Når du er færdig med din JDialog, så kald dispose() og sæt derefter referencen til null, så er vinduet definitivt væk. Hvis du har oprettet din JDialog lokalt i en metode, så er det fint med DISPOSE_ON_CLOSE og dispose() i dit actionevent.
Avatar billede kristianp Nybegynder
31. august 2001 - 13:46 #3
Jeg skal lige være helt sikker !!
Jeg kan ikke sætte referencen til null da jeg ikke har den. Dialogen bliver lavet i en actionperformed i en action klasse der nedarver fra AbstractAction. Men hvis der er nok at kalde dispose henholdsvis sætter DISPOSE_ON_CLOSE er det fint. ??
Avatar billede logical Nybegynder
31. august 2001 - 13:53 #4
Referencen til din dialog ligger i dit (anonyme) objekt i en actionPerformed metode, jeg går næsten ud fra, at det er en lokal variable a la:

public void actionPerformed(ActionEvent e) {
  JDialog d = new JDialog(...);
  d.setvisible(true);
}

Så kalder vil din reference d forsvinde, når metoden er færdig, og window manageren vil frigive objektet, når du kalder dispose(), inkl. egen reference, så derfor er det fra da af klar til garbage collection uden yderligere.

Nogle vil sige, at du ikke behøver at dispose() inden den er klar til garbage collection, hvilket også er rigtigt, men du holder system resourcer i for lang tid, hvilket er en uskik (Ligesom man bør close() en fil, socket m.m. når man er færdig med den).

Avatar billede kristianp Nybegynder
31. august 2001 - 13:56 #5
Ok, det er da rigtigt, d er jo glemt efter metoden er færdig, den glemte jeg da lige..
Men man kan vel også bare skrive

new JDialog();

Jeg har prøvet det og det virker fint
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