Eu tenho uma aplicação q ao se selecionar um id de uma lista, uma janela é aberta com as informações daquele respectivo id. Porém, quando é selecionado novamente um id que jah tem a sua janela aberta, o programa faz com que não se abra outra janela para aquele id e sim, faz com que a janela que já estava aberta venha para frente. Até aí eu consegui fazer. Criei um Map das minhas janelas abertas. Toda vez que um id é selecionado, primeiro eu verifico se a janela com esse id jah foi adicionada no meu map. O problema que eu estou encontrando é q quando eu fecho essa janela e depois tento abri-la novamente, eu não consigo. Criei uma função que deleta essa janela do meu map, mas não tah funcionando. Alguém, pode me ajudar?
public class JanelaPrincipal
private Map<String, JanelaSecundaria> seleciona = new TreeMap<String, JanelaSecundaria>();
public void constroiJanela(String id) {
if (verificaSelecionado(id) == null) {
seleciona.put(id, frmPrincipal.frm2);
TopFrame.this.frmPrincipal.adicionarOutroFrame(); // chamado do metodo que abre uma nova janela
}
else {
frmPrincipal.frm2 = verificaSelecionado(id);
frmPrincipal.frm2.toFront();
}
public JanelaSecundaria verificaSelecionado(String idChave) {
if (seleciona.get(idChave) != null) {
return seleciona.get(idChave);
}//end if
return null;
}
public void tiraSelecionado(String id){
seleciona.remove(id);
}
}
public class JanelaSecundaria{
JanelaPrincipal tf = new JanelaPrincipal();
public JanelaSecundaria(){
setSize(700,550);
setLocation(0,25);
setClosable(true);
setVisible(true);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
addInternalFrameListener (new InternalFrameAdapter() {
@Override
public void internalFrameClosing (InternalFrameEvent ife){
tf.tiraSelecionado(id);
dispose();
}
} );
setLayout(null);
setBorder(null);
}