Terminar o programa qdo um botao eh clicado(resolvido)

9 respostas
D

Ola,

como eu fasso pra terminar um programa qdo um botao eh clicado?

tipo qual eh o API metodo?

obrigado

9 Respostas

black_fire
Segue exemplo comentado
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

/**
 * @author Rodrigo G. Tavares de Souza
 * 26-04-2006
 *
 */
public class FechaPrograma extends JFrame {

	private static final long	serialVersionUID	= 1L;
	
	public static void main(String[] args) {
		new FechaPrograma();
	}
	
	// Esta opção só vai funcionar se não 
	// houverem outras janelas abertas
	public void opcao1(ActionEvent e) {
		this.setVisible(false);
		this.dispose();
	}
	
	// Fecha a aplicação independente
	public void opcao2(ActionEvent e) {
		System.exit(0);
	}
	
	
	private void addEvents() {
	
		// Adciona evento de clique no botão 1
		opt1.addActionListener(
				new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						opcao1(e);
					}
				}
		);
		
		// Adciona evento de clique no botão 2
		opt2.addActionListener(
				new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						opcao2(e);
					}
				}
		);
		
	}
	
	private void init() {
		// fecha a aplicação quando fechada a janela
		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		
		// Aplicar um layout manager
		this.getContentPane().setLayout(new BorderLayout());
		
		// Cria o botão 1
		opt1 = new JButton("OPCAO 1");
		// Adiciona botão 1 no container 
		getContentPane().add(opt1, BorderLayout.NORTH);
		
		// Cria o botão 2
		opt2 = new JButton("OPCAO 2");
		// Adiciona botão 2 no container
		this.getContentPane().add(opt2, BorderLayout.SOUTH);
	
		// Adiciona eventos nos botões
		addEvents();
		
		pack();
		setVisible(true);
	}

	public FechaPrograma() {
		init();
	}
	
	public JButton opt1 = null;
	public JButton opt2 = null;
	
}
D

… analizei o seu codigo…
e tentei varias formas
e ainda num ta funcionando…

oq o System.exit(0); faz?

e o dispose();?

tem q colocar setDefaultCloseOperation(DISPOSE_ON_CLOSE);
?

fiz tudo isso e num deu…

obrigado

D

private static final long serialVersionUID= 1L;
e pra q vc chamo o pack()?

vlw

D

ah o pack eu entendi… hehe

D

o meu codigo eh praticamente esse de fechar o programa

else if(e.getSource() == nao)

{

fechar(e);

}

} // end actionPerformed
public void fechar(ActionEvent e)
{
  setVisible(false);
  dispose();
}

D

hello???

black_fire

darkbluecast:
… analizei o seu codigo…
oq o System.exit(0); faz?
e o dispose();?
tem q colocar setDefaultCloseOperation(DISPOSE_ON_CLOSE);
fiz tudo isso e num deu…
obrigado

System.exit(0) finaliza a aplicação independente de quantas instâncias estejam criadas nessa sessão da VM.

dispose() limpa todos os objetos criados por esta janela. Inclusive ele mesmo. Se este for o único objeto da aplicação ele finaliza a VM.

setDefaultCloseOperation(DISPOSE_ON_CLOSE) diz pro programa que quando o X da janela for fechada ele finaliza a VM, senão a janela some mas a vm continua ativa…

serialVersionUID é um controle de versão da VM…

Se o seu código não está funcionando, tenta criar uma classe identica a essa que eu enviei e executar.
Depois vc vai fazendo suas alterações até achar o ponto que está o erro!

senão der certo, posta a sua classe toda!

D

ahhh vlw… funcionou…
deu para esclarecer melhor… hehehe
obrigado…

David

Na verdade o serialVersionUID é um atributo de controle para classes serializáveis (que implementam Serializable). Essa classe que você está fazendo não precisa ter serialVersionUID.

Para maiores informações: http://www.guj.com.br/posts/list/26252.java

Criado 26 de abril de 2006
Ultima resposta 26 de abr. de 2006
Respostas 9
Participantes 3