Close

Status
Niet open voor verdere reacties.

Warranty

Gebruiker
Lid geworden
3 nov 2006
Berichten
100
Hoe sluit je gewoon een programma af net als dat je op kruisje drukt alleen dan via een knop? Ik heb dit geprobeert maar dat lukt niet:

Code:
    class menuItemSHandler implements ActionListener
    {
        public void actionPerformed( ActionEvent e )
        {
            Hoofdmenu Hoofdmenu = new Hoofdmenu();
            Hoofdmenu.close();
        }
    }

Hij pakt close iig niet. En hierbij sluit ik misschien alleen de frame aangezien Hoofdmenu een frame is. Hoe sluit ik de hele applicatie gewoon net zoals kruisje? :thumb:
 
Code:
[COLOR="Red"]Hoofdmenu Hoofdmenu[/COLOR] = new Hoofdmenu();
Kan al niet.. omdat de variabele naam niet gelijk kan zijn aan de naam van de klasse.
 
Aaah, dat heb je fout. Maar misschien heb je dat ook fout omdat het geen klasse is, maar een frame. De frame heet origineel Hoofdmenu, en ik noem de variabele gekoppeld aan de frame (Hoofdmenu) ook gewoon Hoofdmenu. En dat kan gewoon:)

En nogmaals: ik wil de frame Hoofdmenu ook niet sluiten, maar de hele applicatie.
 
Ik kan me enkel bij killermenace aansluiten.
Code:
Hoofdmenu Hoofdmenu = new Hoofdmenu();
stelt ontegensprekelijk dat Hoofdmenu een klasse is...

En als je OO programmeert dien je te weten dat een instantie dezelfde naam als een klasse geven een slecht idee is. Normaal gezien zou een interpreter/validator/compiler hier zeker een punt van maken.

Om op je vraag te antwoorden, uit de JavaDoc van Window:
Code:
dispose

public void dispose()

    Releases all of the native screen resources used by this Window, its subcomponents, and all of its owned children. That is, the resources for these Components will be destroyed, any memory they consume will be returned to the OS, and they will be marked as undisplayable.

    The Window and its subcomponents can be made displayable again by rebuilding the native resources with a subsequent call to pack or show. The states of the recreated Window and its subcomponents will be identical to the states of these objects at the point where the Window was disposed (not accounting for additional modifications between those actions).

    Note: When the last displayable window within the Java virtual machine (VM) is disposed of, the VM may terminate. See AWT Threading Issues for more information.

    See Also:
        Component.isDisplayable(), pack(), show()

Dus je code, binnen je window wordt zoiets:
Code:
//bij het aanmaken van de knop in de klasse van je frame
this.deKnop.setActionCommand("sluiten");
this.deKnop.addActionListener(new menuItemSHandler(this));

//en dan je klasse met de closelistener

class menuItemSHandler implements ActionListener
{
        //op welk frame listen ik
        private JFrame myFrame;
        public menuItemSHandler(JFrame frame) {
                this.myFrame = frame;
        }

        public void actionPerformed( ActionEvent e )
        {
                //nakijken of de action wel diegene is die we willen
                if ("sluiten".equals(arg0.getActionCommand()))
			this.myFrame.dispose();
        }
}

als je wil kan je andere buttons hier ook laten verwerken (al je menuitems bvb) door andere ActionCommands aan die buttons toe te voegen.

--Johan
 
Ik kan me enkel bij killermenace aansluiten.
Code:
Hoofdmenu Hoofdmenu = new Hoofdmenu();
stelt ontegensprekelijk dat Hoofdmenu een klasse is...

En als je OO programmeert dien je te weten dat een instantie dezelfde naam als een klasse geven een slecht idee is. Normaal gezien zou een interpreter/validator/compiler hier zeker een punt van maken.

Oke, dat wist ik niet. Maar het werkt gewoon in JBuilder dus waarom zou het dan een probleem zijn als je verder toch niks met de variabele te maken krijgt?

Verder bedankt voor het antwoord in ieder geval.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan