fechar tela swing [RESOLVIDO]
Tenho uma classe que retorna uma lista, mas antes precisa chamar uma classe que constrói um frame, o qual mostrará os dados da lista numa caixa swing. Isso tudo está ocorrendo perfeitamente, mas preciso rodar a primeira classe periodicamente e cada vez que o frame , antes desse tal frame ser apresentado, deve fechar o que abriu na tela na vez anterior que ela rodou. Tem como ?
Obrigado.
Jones Chagas
Curtidas 0
Respostas
Douglas Eric
04/01/2012
não entendi nada, mas para fechar um JFrame use o método
[i]also..[/i]
talvez você possa aprender um pouco com esse tópico
http://javafree.uol.com.br/topic-882403-FAQ-JFrame.html
jFrame.dispose();
GOSTEI 0
Jones Chagas
04/01/2012
[quote="sekkuar"]não entendi nada, mas para fechar um JFrame use o método
[i]also..[/i]
talvez você possa aprender um pouco com esse tópico
http://javafree.uol.com.br/topic-882403-FAQ-JFrame.html
Obrigado pela dica Skkuar.
Na verdade estava usando este método mas ele não funcionava, pois na verdade eu não queria apagar minha tela atual e sim a anterior.
Não sei se há um método mais rápido de se fazer isso, maso que fiz foi chamar minha classe swing à partir de outra classe, instanciando o um JFrame e antes de abrir o frame seguinte dou um dispose no frame anterior. Achei uma solução meio nas coxas, mas por eqto é a que está dando certo.
jFrame.dispose();
GOSTEI 0
Douglas Eric
04/01/2012
é tudo questão de referencia.
se você quer fechar "a janela anterior", então você precisa de uma variável de referencia para a tal janela em questão.
de uma lida nesse link que eu passei, especialmente em
"como passar um argumento de uma JFrame para outra JFrame"
GOSTEI 0
World Java
04/01/2012
[quote="wjava"][quote="sekkuar"]não entendi nada, mas para fechar um JFrame use o método
[i]also..[/i]
talvez você possa aprender um pouco com esse tópico
http://javafree.uol.com.br/topic-882403-FAQ-JFrame.html
Obrigado pela dica Skkuar.
Na verdade estava usando este método mas ele não funcionava, pois na verdade eu não queria apagar minha tela atual e sim a anterior.
Não sei se há um método mais rápido de se fazer isso, maso que fiz foi chamar minha classe swing à partir de outra classe, instanciando o um JFrame e antes de abrir o frame seguinte dou um dispose no frame anterior. Achei uma solução meio nas coxas, mas por eqto é a que está dando certo. jFrame.dispose();
public class JFrame1 extends JFrame{
//aqui seu construtor etc e tals.
private void btnAbreDialogActionPerformed(ActionEvent e){
new JDialog1(this, true).setVisible(true);
}
}
public class JDialog1 extends JDialog{
private JFrame1 frame1; //aqui vai acontecer o acoplamento
public void setJFrame1(JFrame1 frame){
//aqui define-se o acoplamento
this.frame1 = frame; //agora vc pode usar tudo o que for public de frame 1 em frame 2
}
}
public class JFrame1 extends JFrame implements ConsultaJFrame1Listener{
//aqui seu construtor etc e tals.
private void btnAbreDialogActionPerformed(ActionEvent e){
JDialog1 dialog = new JDialog1(this, true);
dialog.addListener(this); //aqui adiciono a tela como ouvinte
dialog.setVisible(true);
}
//aqui a implementacao q retorna do listener
public void JFrame1Selecionada(ConsultaJFrame1Event e) {
System.out.println(e.getCliente());
}
}
public class JDialog1 extends JDialog{
//construtor etc..
/**
* define listeners para retorno de informacoes desta classe *
*/
//lista de ouvintes
private ArrayList<JFrame1> listeners = new ArrayList<JFrame1>();
//retorna codigo do ouvinte
public interface ConsultaJFrame1Event{
public List<JFrame1> informacoesConsulta();
}
//pega o codigo do q esta no JFrame1
public interface ConsultaJFrame1Listener{
public void jframe1Selecionado(ConsultaJFrame1Event e);
}
//adiciona ouvinte
public void addListener(ConsultaJFrame1Listener listener){
if(!listeners.contains(listener)){
listeners.add(listener);
}
}
//remove ouvinte
public void removeListener(ConsultaJFrame1Listener listener){
listeners.remove(listener);
}
//notifica ouvinte
private void notifyListeners(final List lista){
ConsultaJFrame1Event evt = new ConsultaJFrame1Event() {
@Override
public List informacoesConsulta() {
return lista;
}
};
for(ConsultaJFrame1Listener list : listeners) {
list.JFrame1Selecionada(evt);
}
}
//fecha listener
private void btnSalvarActionPerformed(ActionEvent e){
JFrame1.save(Cliente por exemplo);
notifyListeners(listaDeClientes); //pronto aqui ja faz todo o processo de retorno ou aviso de tela
this.dispose();
}
}
GOSTEI 0