2010-02-28 16 views
20

Ho il membro privato jButton1 di JFrame e volevo chiudere il frame quando si fa clic sul pulsante.Chiusura di JFrame con il clic del pulsante

jButton1.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) 
    { 
    } 
}); 

ho voluto fare super.close(), ma non riusciva a trovare vicino per Super. C'è qualche modo per fare riferimento al JFrame

risposta

2

si utilizza gatto setVisible() modalità di JFrame (e impostare la visibilità a false) o dispose() metodo che è più simile al close funzionamento.

32

Avrete bisogno di un riferimento al fotogramma specifico che si desidera chiudere ma supponendo di avere il riferimento dispose() dovrebbe chiudere il fotogramma.

jButton1.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) 
    { 
     frameToClose.dispose(); 
    } 
}); 
+0

mentre questo è vero, si salta tutti EventListeners associati con l'evento close quando lo si fa in questo modo ... – Vogel612

+2

Come eliminare questo (corrente) JFrame ??? –

9

Mi sembra che tu abbia due problemi qui. Uno è che JFrame non ha un metodo close, che è stato risolto nelle altre risposte.

L'altro è che si riscontrano problemi nel fare riferimento al proprio JFame. Entro actionPerformed, super fa riferimento a ActionListener. Per fare riferimento all'istanza JFrame, utilizzare invece MyExtendedJFrame.super (dovresti anche essere in grado di utilizzare MyExtendedJFrame.this, poiché non vedo alcun motivo per cui desideri sovrascrivere il comportamento di dispose o setVisible).

4

È possibile utilizzare il metodo super.dispose() che è più simile all'operazione di chiusura.

+2

grazie per aver cercato di essere utile :-) Sfortunatamente, la tua risposta non aggiunge molto utile, nella misura in cui è sbagliato (il super ascoltatore non ha dispose, non c'è bisogno di chiamare il frame super, vedi @ lins314159 per i dettagli completi) – kleopatra

9
JButton b3 = new JButton("CLOSE"); 

b3.setBounds(50, 375, 250, 50); 

b3.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) 
    { 
     System.exit(0); 
    } 
}); 
+2

Ottimo per le applicazioni a finestra singola, ma se lo si utilizza per chiudere una singola finestra, chiuderà anche tutte le altre ... – geisterfurz007

+0

@acp voglio chiudere solo la stessa classe non la precedente classe in java swing –

Problemi correlati