2010-02-28 20 views
20

Tengo el miembro privado jButton1 de JFrame y quería cerrar el marco cuando se hace clic en el botón.Cierre JFrame con botón haga clic en

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

que quería hacer super.close() pero no pudo encontrar cerca de Super. ¿Hay alguna manera para referirse al JFrame

Respuesta

2

Usted utilización gato setVisible() método de JFrame (y establecer la visibilidad a false) o dispose() método que es más similar a close operación.

32

Necesitará una referencia al cuadro específico que desea cerrar pero suponiendo que tiene la referencia dispose() debe cerrar el marco.

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

bien esto es cierto, se salta todas las EventListeners asociados con el evento de cierre cuando lo haces de esa manera ... – Vogel612

+2

Cómo deshacerse de este (actual) JFrame ??? –

9

Me parece que tiene dos problemas aquí. Una es que JFrame no tiene un método close, que se haya abordado en las otras respuestas.

La otra es que tiene problemas para hacer referencia a su JFrame. Dentro de actionPerformed, super se refiere a ActionListener. Para referirse a la instancia de JFrame allí, use MyExtendedJFrame.super en su lugar (también debe poder usar MyExtendedJFrame.this, ya que no veo ninguna razón por la que desee anular el comportamiento de dispose o setVisible).

4

Puede utilizar el método super.dispose(), que es más similar a la operación de cierre.

+2

gracias por tratar de ser útil :-) Desafortunadamente, su respuesta no agrega mucho útil, en la medida de estar equivocado (el súper del oyente no tiene disposición, no es necesario llamar a la supercompacta, consulte @ lins314159 para obtener detalles completos) – 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

Ideal para aplicaciones de una sola ventana, pero si usa esto para cerrar una sola ventana, cerrará todas las demás también ... – geisterfurz007

+0

@acp quiero cerrar solo la misma clase que la clase anterior en java swing –

Cuestiones relacionadas