Terminar o programa qdo um botao eh clicado(resolvido)

Ola,

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

tipo qual eh o API metodo?

obrigado

Segue exemplo comentado

[code]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;

}[/code]

… 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

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

vlw

ah o pack eu entendi… hehe

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();
}

hello???

[quote=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[/quote]

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!

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

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