Fechar Frame  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
fabio.candia
JavaBaby
[Avatar]

Membro desde: 31/05/2004 17:13:30
Mensagens: 75
Localização: Juiz de Fora - MG
Offline

Pode parer imbecil minha pergunta, mas realmente não estou sabendo como fazer.

Alguém sabe me informar como fechar um Frame? Tipo o comando "Close" do Delphi? Tipo cliclar no icone "X" de fechar da janela, mas quero um botão q faça isso...

Agradeço,
Fábio.
[Email] [WWW] [MSN]
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6672
Localização: São Paulo / Catanduva
Offline

O método hide() do JFrame, ou dispose().

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
fabio.candia
JavaBaby
[Avatar]

Membro desde: 31/05/2004 17:13:30
Mensagens: 75
Localização: Juiz de Fora - MG
Offline

O problema do hide(), dispose() ou setVisivle(false) é que com eles não passa no evento "windowClosing"...

eu dou uma mensagem no windowClosing... fechando o Frame pelo "X" de fechar passa corretamente e exibe minha mensagem, com esses metodos acima não passa no windowClosing e minha mensagem não aparece...
[Email] [WWW] [MSN]
keller
GUJ Master
[Avatar]

Membro desde: 12/11/2003 16:24:00
Mensagens: 1850
Localização: Auckland - NZ
Offline

System.exit(0);



ou..

se for JFrame..

seuJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

[WWW] [MSN]
fabio.candia
JavaBaby
[Avatar]

Membro desde: 31/05/2004 17:13:30
Mensagens: 75
Localização: Juiz de Fora - MG
Offline

é JFrame sim mas o System.exit(0) não vai sair da aplicação?
Não é isso que eu quero.
Tenho duas telas, uma chama a outra, quero fechar a segunda e continuar na aplicação.
[Email] [WWW] [MSN]
keller
GUJ Master
[Avatar]

Membro desde: 12/11/2003 16:24:00
Mensagens: 1850
Localização: Auckland - NZ
Offline

entao use..

seuJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

[WWW] [MSN]
fabio.candia
JavaBaby
[Avatar]

Membro desde: 31/05/2004 17:13:30
Mensagens: 75
Localização: Juiz de Fora - MG
Offline

O problema é que:

meuJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

é igual a se eu fechasse com System.exit(0);

pois os dois modos vão finalizar a aplicação e eu quero apenas fechar o segundo JFrame.
[Email] [WWW] [MSN]
fabio.candia
JavaBaby
[Avatar]

Membro desde: 31/05/2004 17:13:30
Mensagens: 75
Localização: Juiz de Fora - MG
Offline

um exemplo disso:

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class FecharJFrame extends JFrame {
public FecharJFrame() {
super ("Como Fechar um JFrame");

Container tela = getContentPane();

tela.setLayout(new FlowLayout());

JButton btn = new JButton("Abrir Outro JFrame");
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
SeguntaTela segTela = new SeguntaTela();
segTela.setVisible(true);
}
});

tela.add(btn);

setSize(300, 150);

setLocationRelativeTo(null);

setVisible(true);
}

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

private class SeguntaTela extends JFrame {
public SeguntaTela() {
super ("Quero Fechar essa Tela");

Container tela = getContentPane();

tela.setLayout(new FlowLayout());

JButton btn = new JButton("hide()");
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
hide();
}
});

JButton btn2 = new JButton("dispose()");
btn2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});

JButton btn3 = new JButton("setVisible(false)");
btn3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setVisible(false);
}
});

JButton btn4 = new JButton("System.exit(0)");
btn4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});

JLabel label = new JLabel("Experimente Fechar com 'ALT + F4' ou 'X' da Barra de Titulos");
JLabel label2 = new JLabel("Alguém sabe fechar com mesmo efeito do 'ALT + F4'?");

tela.add(btn);
tela.add(btn2);
tela.add(btn3);
tela.add(btn4);
tela.add(label);
tela.add(label2);

EventWindowClosing eventClosing = new EventWindowClosing(this);

this.addWindowListener(eventClosing);

setSize(600, 150);

setLocationRelativeTo(null);
}
}

private class EventWindowClosing extends WindowAdapter {
private JFrame owner;

public EventWindowClosing(JFrame owner) {
this.owner = owner;
}

public void windowClosing(WindowEvent e) {
JOptionPane.showMessageDialog(owner, "Fechou Corretamente.", "Informação",
JOptionPane.INFORMATION_MESSAGE);
}
}
}
[Email] [WWW] [MSN]
fabio.candia
JavaBaby
[Avatar]

Membro desde: 31/05/2004 17:13:30
Mensagens: 75
Localização: Juiz de Fora - MG
Offline

o JFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
faz o mesmo efeito de System.exit(0);
sai da segunda tela...

coloquei um exemplo desse problema:


import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class FecharJFrame extends JFrame {
public FecharJFrame() {
super ("Como Fechar um JFrame");

Container tela = getContentPane();

tela.setLayout(new FlowLayout());

JButton btn = new JButton("Abrir Outro JFrame");
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
SeguntaTela segTela = new SeguntaTela();
segTela.setVisible(true);
}
});

tela.add(btn);

setSize(300, 150);

setLocationRelativeTo(null);

setVisible(true);
}

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

private class SeguntaTela extends JFrame {
public SeguntaTela() {
super ("Quero Fechar essa Tela");

Container tela = getContentPane();

tela.setLayout(new FlowLayout());

JButton btn = new JButton("hide()");
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
hide();
}
});

JButton btn2 = new JButton("dispose()");
btn2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});

JButton btn3 = new JButton("setVisible(false)");
btn3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setVisible(false);
}
});

JButton btn4 = new JButton("System.exit(0)");
btn4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});

JLabel label = new JLabel("Experimente Fechar com 'ALT + F4' ou 'X' da Barra de Titulos");
JLabel label2 = new JLabel("Alguém sabe fechar com mesmo efeito do 'ALT + F4'?");

tela.add(btn);
tela.add(btn2);
tela.add(btn3);
tela.add(btn4);
tela.add(label);
tela.add(label2);

EventWindowClosing eventClosing = new EventWindowClosing(this);

this.addWindowListener(eventClosing);

setSize(600, 150);

setLocationRelativeTo(null);
}
}

private class EventWindowClosing extends WindowAdapter {
private JFrame owner;

public EventWindowClosing(JFrame owner) {
this.owner = owner;
}

public void windowClosing(WindowEvent e) {
JOptionPane.showMessageDialog(owner, "Fechou Corretamente.", "Informação",
JOptionPane.INFORMATION_MESSAGE);
}
}
}
[Email] [WWW] [MSN]
keller
GUJ Master
[Avatar]

Membro desde: 12/11/2003 16:24:00
Mensagens: 1850
Localização: Auckland - NZ
Offline

entao use o


espero ter ajudado..

[WWW] [MSN]
eumlmp
Smalltalk
[Avatar]

Membro desde: 06/09/2009 17:05:03
Mensagens: 3
Offline

Ola, pelo que eu entendi, você deseja executar sua janelinha de mensagem tanto quando fechando com o "X" quanto com o botão correto?!

Logo eu sugiro que vc dento do metodo ActionPerformed do seu botão vc lance esta exeção especifica:



Espero ter ajudado.

Aprender é Crescer
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team