GARANTIR DESCONTO

Fórum Botão cancelar que fecha a janela #565863

09/04/2009

0

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

Gabriel Lago

Responder

Posts

09/04/2009

Vitor Pamplona

faça assim: ClasseDaJanela.this.setVisible(false);
Responder

Gostei + 0

09/04/2009

Terra Jr.

[quote="vfpamp"]faça assim: ClasseDaJanela.this.setVisible(false);
No caso a janela ficará invisível, mas não será fechada.! Ok?!
Responder

Gostei + 0

09/04/2009

Glaucio Melo

[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?!
Isso mesmo :)
Responder

Gostei + 0

09/04/2009

Daniel Martins

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:
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
        }
    });
}
[]'s
Responder

Gostei + 0

09/04/2009

Marcelo Martins

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
Responder

Gostei + 0

09/04/2009

Filipe Andrade

esqueça o this. coloque apenas dispose() e com ctz irá fechar!
Responder

Gostei + 0

09/04/2009

Romeryto Lira

[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.
Responder

Gostei + 0

09/04/2009

Romeryto Lira

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.
Responder

Gostei + 0

09/04/2009

Romeryto Lira

[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?
Responder

Gostei + 0

09/04/2009

Jacques Santos

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.
Responder

Gostei + 0

09/04/2009

Jacques Santos

Acabei de descobrir, no NetBeans é só modificar a propriedade defaultCloseOperation para DISPOSE ou se preferir HIDE.
Responder

Gostei + 0

29/05/2009

Diogo Rodrigues

estou usando o
setVisible(false);
dispose();
Ele fecha a janela, até aí tudo blz. Mas continua executando. Como no exemplo abaixo.
try{
...
if (diferenca < 10000) {
                       JOptionPane.showMessageDialog(null,"Erro: O cliente não possui o tempo mínimo de conta no banco!");
                       setVisible(false);
                       dispose();
          }
...
Ele não para por aí. Continua as instruções e insere no banco.
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());
        }
Tem nem uma semana que comecei a estudar java e até agora todas as dúvidas que tive encontrei aqui.
Responder

Gostei + 0

29/05/2009

Carlos Heuberger

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! []]
Responder

Gostei + 0

29/05/2009

Diogo Rodrigues

É 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.
Responder

Gostei + 0

29/05/2009

Carlos Heuberger

[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! ...
[]
Responder

Gostei + 0

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

Aceitar