GARANTIR DESCONTO

Fórum Codigo para o botão "Sair", fechando só o formulario #564810

09/04/2009

0

Prezado colega, Criei um botão no meu formulário e quero que ao clicar nele, eu apenas fecho este formulario e não a aplicação. Como devo fazer? aí o meu trecho de código:
				c.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e){
						System.exit(0);
					}
				});
 
Atenciosamente, Edson
Edson Amorim

Edson Amorim

Responder

Posts

09/04/2009

Juan Damasceno

Use o método dispose() do seu formulário.
Responder

Gostei + 0

09/04/2009

Rodrigo Scorsatto

cara da uma olhadinha nesse codigo:
public  void botaoX (){
           addWindowListener (new WindowAdapter () {
                  public void windowClosing (WindowEvent e) {
                         //caixa de dialogo retorna um inteiro
                         setVisible (false); // sai da tela em que esta
                         Principal.getInstance ().setVisible (true); //vai para a tela que você quiser...
                         
                  }
           });
Responder

Gostei + 0

09/04/2009

André Britto

Pessoal eu faria da seguinte forma...
private void formFrameClosing(javax.swing.event.InternalFrameEvent evt) {                                          
        this.fechar();
    } 

private void fechar(){
        if(javax.swing.JOptionPane.showConfirmDialog(null,"Deseja Fechar?","ATENÇÂO ",javax.swing.JOptionPane.YES_NO_OPTION )==0){
            this.dispose();
        }
    }
assim poderia colocar um botão fechar chamando o método fechar(); E prefia o dispose. Pelo que ja andei vendo sobre o setVisible(), esse método apenas esconde o form e não fecha!! Seu form continua instanciado... me corrijam se eu estiver errado ;)
Responder

Gostei + 0

09/04/2009

Henrique Freitas

Sempre uso o metodo dispose(); O setvisible(false) somente deixa invisivel, nao o fecha!
Responder

Gostei + 0

09/04/2009

Edson Amorim

Prezados colegas, Estou tentando e estudando as 2 maneiras de fazer a sugestão de voces. Tentei primeiramente a sugestão do Henrique mas não estou sabendo bem como inserir as instruções no meu código. está dando alguns erros. Gostaria que se for possível, fizesse a correção no meu código já com as alterações abaixo:
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;


public class Relatorio1 extends JFrame {

        JLabel l;
        JTextField t;
        JButton b, c;
        Initial janela;

        public Relatorio1() {
                super("Consulta Contatos por Nome");
                Container tela = getContentPane();
                setLayout(null);
                l = new JLabel("Nome.: ");
                l.setBounds(20, 20, 100, 20);
                t = new JTextField(50);
                t.setBounds(20, 50, 250, 20);
                b = new JButton("Exibir Relatório");
                b.setBounds(20,  90, 130, 20);
                c = new JButton("Sair");
                c.setBounds(200, 90,  70, 20);
                tela.add(l);
                tela.add(t);
                tela.add(b);
                tela.add(c);
                b.addActionListener(new ActionListener() {
                                        public void actionPerformed(ActionEvent e) {
                                                janela = new Initial();
                                                janela.buscaTabela(t.getText());
                                                janela.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                                                janela.setVisible(true);
                                        }
                                });
			   //	c.addActionListener(new ActionListener() {
			   //		public void actionPerformed(ActionEvent e){
			   //     	       System.exit(0);
			   //	    	}
			   //	});
		//*****************************************
		//** inseri o seu código aqui...		
		private void Relatorio1Closing(javax.swing.event.InternalFrameEvent evt) {                                             
        this.fechar();   
         }    
  
        private void fechar(){   
        if(javax.swing.JOptionPane.showConfirmDialog(null,"Deseja Fechar?","ATENÇÂO ",javax.swing.JOptionPane.YES_NO_OPTION )==0){   
            this.dispose();   
        }   
        }  
		//**** Mas está dando erro    **********
		//******************************************	
				
                setSize(300, 200);
                setVisible(true);
                setLocationRelativeTo(null);

        }

        public static void main(String[] args) {
                Relatorio1 app = new Relatorio1();
                app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        }

        
}
Atenciosamente, Edson
Responder

Gostei + 0

09/04/2009

Marcos

[quote="Amamorim"]
          //c.addActionListener(new ActionListener() {
	   //		public void actionPerformed(ActionEvent e){
	   //     	       System.exit(0);
	   //	    	}
	   //	});
Edson, experimenta descomentar essa parte do seu código ai e em vez de chamar o System.exit(0); vc chama o seu método fechar(); ;)
Responder

Gostei + 0

09/04/2009

Edson Amorim

Prezado Marcos, Fiz isso conforme voce sugeriu. Funcionou... só que fexa totalmente a aplicação. Tem como eu fechar só o formulario? Atenciosamente, Edson
Responder

Gostei + 0

09/04/2009

Marcos

[quote="Amamorim"]
        public static void main(String[] args) {
                Relatorio1 app = new Relatorio1();
                //app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        }     

Edson , comenta a linha igual acima e tenta novamente...
Responder

Gostei + 0

09/04/2009

Mrs Potter

Olha..eu não sou a pessoa mais experiente para dizer... Mas nas minhas aplicações, eu abro a janela anterior (janela para a qual você deseja retornar) e logo em seguida, fecho a janela atual... Por exemplo... dentro do método da ação, você coloca algo como: [b]Janela nova = new Janela(); [/b]//Janela é a classe para a qual vc deseja retornar [b]nova.setVisible(true);[/b]//abre a janela [b]setVisible(false);[/b]//fecha a janela atual Não sei se isso vai te ajudar muito... porque eu estou usando isso pra fechar as janelas no JFrame (=^.^=) Kol (=^.^=)
Responder

Gostei + 0

09/04/2009

Edson Amorim

Lovely_kol, Obrigado pela ajuda!!, acho que é isso mesmo ou seja: eu clico no menu para chamar uma telinha para consulta. Ok. Se eu não quizer usar esta telinha e quizer abrir ourtra? aí, eu criei um bot]ao nesta telinha com o Nome de "Sair", para que ao clicar nele, como acontece quando a gente clica lá em cima naquele "x" aí, o formulario fecharia, mas só ele. O outro formulário, onde está o menu, continuaria aberto para escolha de outra opção!. Como é que voce faria isso? Edson
Responder

Gostei + 0

09/04/2009

Edson Amorim

Olá Marcos Fabris, Fiz a sua sugestão mas não consegui ainda!!. Tirei o comentário daquela parte de código. Atenciosamente, Edson
Responder

Gostei + 0

09/04/2009

Marcos

[quote="lovely_kol"]Olha..eu não sou a pessoa mais experiente para dizer... Mas nas minhas aplicações, eu abro a janela anterior (janela para a qual você deseja retornar) e logo em seguida, fecho a janela atual... Por exemplo... dentro do método da ação, você coloca algo como: [b]Janela nova = new Janela(); [/b]//Janela é a classe para a qual vc deseja retornar [b]nova.setVisible(true);[/b]//abre a janela [b]setVisible(false);[/b]//fecha a janela atual Não sei se isso vai te ajudar muito... porque eu estou usando isso pra fechar as janelas no JFrame (=^.^=) Kol (=^.^=)
até seria uma saída, o problema é que ela vai continuar aberta só que invisível e consumindo memória... Edson vc está usando o JDesktopPane ou abrindo vários JFrames?
Responder

Gostei + 0

09/04/2009

Marcos

Edson, já vi o problema... está dando erro no método fechar pois vc está declarando ele dentro do método construtor.. tire de dentro do construtor.. aí é só chamar o método fechar assim..
c.addActionListener(new ActionListener() {  
                   public void actionPerformed(ActionEvent e){  
                            fechar();
                       }  
                });
:!:
Responder

Gostei + 0

09/04/2009

Mrs Potter

[quote="Amamorim"]Lovely_kol, Obrigado pela ajuda!!, acho que é isso mesmo ou seja: eu clico no menu para chamar uma telinha para consulta. Ok. Se eu não quizer usar esta telinha e quizer abrir ourtra? aí, eu criei um bot]ao nesta telinha com o Nome de "Sair", para que ao clicar nele, como acontece quando a gente clica lá em cima naquele "x" aí, o formulario fecharia, mas só ele. O outro formulário, onde está o menu, continuaria aberto para escolha de outra opção!. Como é que voce faria isso? Edson
Tipo... vc deve clicar com o botão direito do mouse em cima do botão "sair" daí entra em "events", "action", "actionPerformed" daí o programa vai para os códigos da classe... então, vc deve escrever nesse código mais ou menos o que eu te falei: Janela nova = new Janela(); nova.setVisible(true); setVisible(false); daí no lugar de "Janela", vc coloca o nome da classe para a qual vc deseja retornar :) (=^.^=) Kol (=^.^=)
Responder

Gostei + 0

09/04/2009

Mrs Potter

[quote="Marcos Fabris"] até seria uma saída, o problema é que ela vai continuar aberta só que invisível e consumindo memória... Edson vc está usando o JDesktopPane ou abrindo vários JFrames?
hmmm... então como eu poderia fechar essa janela sem gastar memória? :lol: (=^.^=) Kol (=^.^=)
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar