|
| gem før lukning ved tryk på [x] i hjørnet ~ Fra : Simon [2700] |
Dato : 09-05-05 21:42 |
|
Hej,
jeg sidder lige og arbejder på et program til en skoleopgave, jeg benytter
mig af JBuilder 2005,
og den har i min JFrame lavet en constructor,
public MainFrame() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
det kunne jeg godt tænke mig at ændre i så jeg kan kalde en metode,
lukGem(), der skal sørge for at alt bliver gemt osv, inden
programmet afslutter..
hvad skal jeg gøre for at få dette til at virke ? har prøvet at skifte
EXIT_ON_CLOSE setningen ud med en metode
der skulle udskrive en linie hvorefter System.exit(); blev kaldt, men det
resulterede i at metoden blev køre under opstart af programmet :)
Tak for hjælpen
mvh.Simon
| |
Malte (09-05-2005)
| Kommentar Fra : Malte |
Dato : 09-05-05 21:47 |
|
Simon [2700] wrote:
> Hej,
> jeg sidder lige og arbejder på et program til en skoleopgave, jeg benytter
> mig af JBuilder 2005,
> og den har i min JFrame lavet en constructor,
>
> public MainFrame() {
> try {
> setDefaultCloseOperation(EXIT_ON_CLOSE);
> jbInit();
> } catch (Exception exception) {
> exception.printStackTrace();
> }
> }
>
> det kunne jeg godt tænke mig at ændre i så jeg kan kalde en metode,
> lukGem(), der skal sørge for at alt bliver gemt osv, inden
> programmet afslutter..
>
> hvad skal jeg gøre for at få dette til at virke ? har prøvet at skifte
> EXIT_ON_CLOSE setningen ud med en metode
> der skulle udskrive en linie hvorefter System.exit(); blev kaldt, men det
> resulterede i at metoden blev køre under opstart af programmet :)
>
> Tak for hjælpen
> mvh.Simon
>
>
>
Hmm, længe siden jeg har lavet Swing, men hvad med en finally clause et
eller andet stratetisk sted?
| |
Malte (09-05-2005)
| Kommentar Fra : Malte |
Dato : 09-05-05 21:48 |
|
Malte wrote:
> Simon [2700] wrote:
>
>> Hej,
>> jeg sidder lige og arbejder på et program til en skoleopgave, jeg
>> benytter mig af JBuilder 2005,
>> og den har i min JFrame lavet en constructor,
>>
>> public MainFrame() {
>> try {
>> setDefaultCloseOperation(EXIT_ON_CLOSE);
>> jbInit();
>> } catch (Exception exception) {
>> exception.printStackTrace();
>> }
>> }
>>
>> det kunne jeg godt tænke mig at ændre i så jeg kan kalde en metode,
>> lukGem(), der skal sørge for at alt bliver gemt osv, inden
>> programmet afslutter..
>>
>> hvad skal jeg gøre for at få dette til at virke ? har prøvet at skifte
>> EXIT_ON_CLOSE setningen ud med en metode
>> der skulle udskrive en linie hvorefter System.exit(); blev kaldt, men
>> det resulterede i at metoden blev køre under opstart af programmet :)
>>
>> Tak for hjælpen
>> mvh.Simon
>>
>>
>>
> Hmm, længe siden jeg har lavet Swing, men hvad med en finally clause et
> eller andet stratetisk sted?
Desuden burde vinduet have en eller anden form for windowClosing event?
| |
Brian (09-05-2005)
| Kommentar Fra : Brian |
Dato : 09-05-05 22:02 |
|
"Malte" <You_can_spam_me_here@nmalte.dk> wrote in message
news:427fcc83$0$78284$157c6196@dreader1.cybercity.dk...
> Malte wrote:
>> Simon [2700] wrote:
>>
>>> Hej,
>>> jeg sidder lige og arbejder på et program til en skoleopgave, jeg
>>> benytter mig af JBuilder 2005,
>>> og den har i min JFrame lavet en constructor,
>>>
>>> public MainFrame() {
>>> try {
>>> setDefaultCloseOperation(EXIT_ON_CLOSE);
>>> jbInit();
>>> } catch (Exception exception) {
>>> exception.printStackTrace();
>>> }
>>> }
>>>
>>> det kunne jeg godt tænke mig at ændre i så jeg kan kalde en metode,
>>> lukGem(), der skal sørge for at alt bliver gemt osv, inden
>>> programmet afslutter..
>>>
>>> hvad skal jeg gøre for at få dette til at virke ? har prøvet at skifte
>>> EXIT_ON_CLOSE setningen ud med en metode
>>> der skulle udskrive en linie hvorefter System.exit(); blev kaldt, men
>>> det resulterede i at metoden blev køre under opstart af programmet :)
>>>
>>> Tak for hjælpen
>>> mvh.Simon
>>>
>>>
>>>
>> Hmm, længe siden jeg har lavet Swing, men hvad med en finally clause et
>> eller andet stratetisk sted?
> Desuden burde vinduet have en eller anden form for windowClosing event?
Er det sådan noget som dette du leder efter?
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
WinClose(e);
}
});
}
| |
Brian (09-05-2005)
| Kommentar Fra : Brian |
Dato : 09-05-05 22:04 |
|
"Malte" <You_can_spam_me_here@nmalte.dk> wrote in message
news:427fcc83$0$78284$157c6196@dreader1.cybercity.dk...
> Malte wrote:
>> Simon [2700] wrote:
>>
>>> Hej,
>>> jeg sidder lige og arbejder på et program til en skoleopgave, jeg
>>> benytter mig af JBuilder 2005,
>>> og den har i min JFrame lavet en constructor,
>>>
>>> public MainFrame() {
>>> try {
>>> setDefaultCloseOperation(EXIT_ON_CLOSE);
>>> jbInit();
>>> } catch (Exception exception) {
>>> exception.printStackTrace();
>>> }
>>> }
>>>
>>> det kunne jeg godt tænke mig at ændre i så jeg kan kalde en metode,
>>> lukGem(), der skal sørge for at alt bliver gemt osv, inden
>>> programmet afslutter..
>>>
>>> hvad skal jeg gøre for at få dette til at virke ? har prøvet at skifte
>>> EXIT_ON_CLOSE setningen ud med en metode
>>> der skulle udskrive en linie hvorefter System.exit(); blev kaldt, men
>>> det resulterede i at metoden blev køre under opstart af programmet :)
>>>
>>> Tak for hjælpen
>>> mvh.Simon
>>>
>>>
>>>
>> Hmm, længe siden jeg har lavet Swing, men hvad med en finally clause et
>> eller andet stratetisk sted?
> Desuden burde vinduet have en eller anden form for windowClosing event?
P.S Der findes mange flere events som kaldes når der sker noget med
vinduet - prøv at læse APIen
Brian
| |
Kasper G. Christense~ (10-05-2005)
| Kommentar Fra : Kasper G. Christense~ |
Dato : 10-05-05 06:15 |
|
>> Hmm, længe siden jeg har lavet Swing, men hvad med en finally clause
>> et eller andet stratetisk sted?
Det tror jeg ikke nødvendigvis vil virke. Så vidt jeg husker kaldes
finally når et objekt bliver fjernet af Garbage-collectoren, men når
programmet lukkes, kører denne vist ikke nødvendigvis på alle objekter,
så du kan ikke være sikker på at en finally bliver kaldt.
> Desuden burde vinduet have en eller anden form for windowClosing event?
Ja, som Brian skriver, så er tricket at skrive sin egen WindowListener,
som gør det man ønsker, man kan evt. helt undlade
setDefaultCloseOperation (eller måske sætte den til DO_NOTHING eller
hvad det nu hedder -- se API'en), og så selv tilføje System.exit() i sin
WindowListener, hvis man vil lukke programmet.
Mvh. Kasper
| |
Malte (10-05-2005)
| Kommentar Fra : Malte |
Dato : 10-05-05 06:42 |
|
Kasper G. Christensen wrote:
>>> Hmm, længe siden jeg har lavet Swing, men hvad med en finally clause
>>> et eller andet stratetisk sted?
>
>
> Det tror jeg ikke nødvendigvis vil virke. Så vidt jeg husker kaldes
> finally når et objekt bliver fjernet af Garbage-collectoren, men når
> programmet lukkes, kører denne vist ikke nødvendigvis på alle objekter,
> så du kan ikke være sikker på at en finally bliver kaldt.
>
>> Desuden burde vinduet have en eller anden form for windowClosing event?
>
>
> Ja, som Brian skriver, så er tricket at skrive sin egen WindowListener,
> som gør det man ønsker, man kan evt. helt undlade
> setDefaultCloseOperation (eller måske sætte den til DO_NOTHING eller
> hvad det nu hedder -- se API'en), og så selv tilføje System.exit() i sin
> WindowListener, hvis man vil lukke programmet.
>
> Mvh. Kasper
Nu rolig! Som det vist fremgik af mine svar var de ment som hjælp til
videreforskning for OM, ikke som en facitliste.
| |
Martin Rytter (10-05-2005)
| Kommentar Fra : Martin Rytter |
Dato : 10-05-05 16:27 |
|
Hej
Kasper G. Christensen wrote:
> Så vidt jeg husker kaldes
> finally når et objekt bliver fjernet af Garbage-collectoren, men når
> programmet lukkes, kører denne vist ikke nødvendigvis på alle objekter,
> så du kan ikke være sikker på at en finally bliver kaldt.
Det er en misforståelse. Du tænker på den finalize() som er defineret
for Object. Men kan overskrive den hvis man ønsker der skal ske noget
ved garbage collection. Men det er ikke god stil at bygge en masse
funktionalitet ind af den vej.
Finally er sprogkonstruktion som bruges i forbindelse med
exceptionhandling til at sikre at noget bliver kørt selvom en exception
finder sted.
Og til spørgsmålet. Du skal tilføje en WindowListener som det allerede
er påpeget. Brug eventuel WindowAdapter som er en implementering af
interfacet WindowListener. Dermed slipper du for at tilføje dummy
metoder for ting du ikke benytter.
Du tilføjer listeneren med JFrame : addWindowListener(WindowListener l).
Men se på API'et. Og læs søg på Observer pattern hvis du ikke forstå
pointen med designet.
--
Martin Rytter, martin at ryt dk, Odense, Denmark.
| |
Simon [2700] (12-05-2005)
| Kommentar Fra : Simon [2700] |
Dato : 12-05-05 12:10 |
|
tak for svar allesammen
mvh. Simon
> Finally er sprogkonstruktion som bruges i forbindelse med
> exceptionhandling til at sikre at noget bliver kørt selvom en exception
> finder sted.
>
> Og til spørgsmålet. Du skal tilføje en WindowListener som det allerede er
> påpeget. Brug eventuel WindowAdapter som er en implementering af
> interfacet WindowListener. Dermed slipper du for at tilføje dummy metoder
> for ting du ikke benytter.
>
> Du tilføjer listeneren med JFrame : addWindowListener(WindowListener l).
>
> Men se på API'et. Og læs søg på Observer pattern hvis du ikke forstå
> pointen med designet.
>
> --
> Martin Rytter, martin at ryt dk, Odense, Denmark.
| |
|
|