Botão cancelar que fecha a janela
A classe abaixo extende de JFrame e desejo fechar a janela quando o botão cancelar for clicado. Para isso pensei em adicionar no evento action comand deste botão a seguinte linha:
this.dispose();
O problema é que a referência this se refere ao tipo aciton listener se for usada dentro do evento. Isso daria certo se o this fizesse referência à classe CadastroUsuarios
Como resolvo isso? Como faço a janela fechar (só fechar a janela!)quando o botão cancelar for pressionado?[/code]
private JButton getJButtonCancelar() {
if (jButtonCancelar == null) {
jButtonCancelar = new JButton();
jButtonCancelar.setBounds(new Rectangle(443, 162, 95, 25));
jButtonCancelar.setText("Cancelar");
jButtonCancelar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("Dar um jeito d fechar a janela");; // Dar um jeito de fechar a janela
}
}
);
}
Gabriel Lago
Curtidas 0
Respostas
Vitor Pamplona
09/04/2009
faça assim:
ClasseDaJanela.this.setVisible(false);
GOSTEI 0
Terra Jr.
09/04/2009
[quote="vfpamp"]faça assim:
ClasseDaJanela.this.setVisible(false);
No caso a janela ficará invisível, mas não será fechada.!
Ok?!
GOSTEI 0
Glaucio Melo
09/04/2009
[quote="terra.jr"][quote="vfpamp"]faça assim:
ClasseDaJanela.this.setVisible(false);
No caso a janela ficará invisível, mas não será fechada.!
Ok?! GOSTEI 0
Daniel Martins
09/04/2009
Não entendi bem sua pergunta, mas pelo que consegui entender, você não está conseguindo acessar o 'this' do formulário para chamar o dispose(), é isso?
Se for, dentro do seu método actionPerformed(), utilize o seguinte código para fechar a janela:
[]'s
public class Formulario extends JFrame {
private JButton fecharButton;
...
fecharButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
Formulario.this.dispose(); // Referência this do formulário
}
});
}
GOSTEI 0
Marcelo Martins
09/04/2009
Caso vc não esteja levando fé no setVisible() então faça o seguinte:
JButton fechar = new JButton("Fechar");
fechar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
((JButton) e.getSource).getTopLevelAncestor().hide();
}
});
Este com certeza fechara apenas a janela. Espero que resolva seu problema
Ate mais... FUI
GOSTEI 0
Filipe Andrade
09/04/2009
esqueça o this.
coloque apenas dispose()
e com ctz irá fechar!
GOSTEI 0
Romeryto Lira
09/04/2009
[quote="fcsacin"]esqueça o this.
coloque apenas dispose()
e com ctz irá fechar!
Eu tenho uma Janela principal e no menu instancio(clico pra abrir) uma mova Janela de Cliente. Aí depois eu pra fechar num botão eu coloco no evento onclick dele o this.setVisible(false). Mas essa janela continuará existindo na memória. Quando eu for no formulário principal dinovo e mandar abrir o formulário de clientes ele tem o código de instanciar a janela de Cliente. Aí eu fecho a de cliente. Então vão ficar várias janelas de clientes alocadas na memória?
O dispose() realmente fecha a janela? Mata a janela realmente. Pois vi que o que com o setVisible(false) o programa ficava rodando ainda na memória e muito lento. Se puderem me ajudar agradeço.
GOSTEI 0
Romeryto Lira
09/04/2009
Usei o this.dispose() pra fechar o formulário mas parece que ainda ele fica rodando na memória, assim o programa fica lento. Vai em anexo o screenshot da minha tela e podem ver na parte de baixo do netBeans que o programa ainda continua rodando na memória. Acho que o certo era quando se fechasse o jFrame ele liberasse a memória.
GOSTEI 0
Romeryto Lira
09/04/2009
[quote="romeryto"]Usei o this.dispose() pra fechar o formulário mas parece que ainda ele fica rodando na memória, assim o programa fica lento. Vai em anexo o screenshot da minha tela e podem ver na parte de baixo do netBeans que o programa ainda continua rodando na memória. Acho que o certo era quando se fechasse o jFrame ele liberasse a memória.
Queria saber a maneira mais indicada pra fechar a janela tendo como base a eficiência do programa. O dispose() é o ideal?
GOSTEI 0
Jacques Santos
09/04/2009
Estou com uma dúvida semelhante.Como eu faço para fechar uma janela sem fechar a aplicação toda e sem utilizar botão mas sim o usuário clicar no "X" da janela?
Estou fazendo uma tela de ajuda onde não haverá botões.
GOSTEI 0
Jacques Santos
09/04/2009
Acabei de descobrir, no NetBeans é só modificar a propriedade defaultCloseOperation para DISPOSE ou se preferir HIDE.
GOSTEI 0
Diogo Rodrigues
09/04/2009
estou usando o
Ele fecha a janela, até aí tudo blz. Mas continua executando. Como no exemplo abaixo.
Ele não para por aí. Continua as instruções e insere no banco.
Tem nem uma semana que comecei a estudar java e até agora todas as dúvidas que tive encontrei aqui.
setVisible(false); dispose();
try{
...
if (diferenca < 10000) {
JOptionPane.showMessageDialog(null,"Erro: O cliente não possui o tempo mínimo de conta no banco!");
setVisible(false);
dispose();
}
...
try { Statement st=cnn.createStatement();
String sql="INSERT INTO emprestimo (Tipo_emprestimo_idTipo_emprestimo...)...
if (st.executeUpdate(sql)==1)
JOptionPane.showMessageDialog(null,"Produto Inserido com sucesso");
else{
JOptionPane.showMessageDialog(null,"Erro na Inclusão");
}
st.close();
} catch (Exception erro){
JOptionPane.showMessageDialog(null,"Erro: " + erro.getMessage());
}
GOSTEI 0
Carlos Heuberger
09/04/2009
não tem muito a ver com esse tópico....
Voce fechou a janela, mas isso não fecha a aplicação (como faria uma aplicação sem GUI?) Se VOCE programou algo para rodar, o computador vai (tentar) rodar isso. Se não tiver nada rodando (outra Thread) e fechar a janela, a máquina virtual (JVM) vai ser terminada e pronto, mas se tiver algum Thread (não daemon) rodando ela continuará viva.
Solução (brutal): chame o System.exit(0) que fecha a JVM!
[]]
GOSTEI 0
Diogo Rodrigues
09/04/2009
É que em C seria tão fácil, só daria um break e pararia a estrutura. Qual a solução em java? Só isso que eu queria saber.
GOSTEI 0
Carlos Heuberger
09/04/2009
[quote="xploitx"]É que em C seria tão fácil, só daria um break e pararia a estrutura. Qual a solução em java? Só isso que eu queria saber.
??? pararia a estrutura ??? o que que é isso ???
que me lembro em C não é tão diferente assim, se fechar uma janela, o resto do programa continua rodando... mas já faz muito tempo que não fiz nada em C...
Como faz em Java:
[quote="simu escreveu na mensagem anterior!!!"]...
Solução (brutal): chame o [b]System.exit(0)[/b] que fecha a JVM!
...GOSTEI 0
Thiago Lima
09/04/2009
this.dispose()
GOSTEI 0
Thiago Lima
09/04/2009
uma pergunta, sei que não tem nada a ver com o tópico.
Como aumenta a foto do perfil???
GOSTEI 0