Mas me responde outra dúvida. Como faço para setar o usuarios como null no botão SAIR do Jinternalframe para assim acessar novamente esse jinternalframe?
Depois de alguns dias levando um laço consegui o que precisava, que era fazer um teste com os jinternalframe. Abrir somente um e depois de fechado conseguir abrir ele novamente. Abaixo o modelo:
Para abrir as janelas (JInternalFrame) no JDesktopPane, eu utilizo da seguinte forma:
Tenho uma função que fica na TelaPrincipal.java que adiciona as telas no Desktop:
//ADICIONA TELAS (JInternalFrame) AO JDesktopPane
// usado assim: this.addTelaDesk(new TelaFuncionarios(null));
public void addTelaDesk(JInternalFrame tela){
for (JInternalFrame jInternalFrame : this.getTelaDesktop().getAllFrames()) {
// se uma janela semelhante estiver aberta
if(jInternalFrame.getClass().toString().equalsIgnoreCase(tela.getClass().toString())){
jInternalFrame.moveToFront(); // traz janela para frente para facilitar a escolha
Object[] opções = {"Utilizar Aberta", "Abrir Nova"};
int qst = JOptionPane.showOptionDialog(null, "Abrir uma nova janela ou utilizar a que ja esta aberta?",
"Janela duplicada",
JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
opções,
opções[0]
);
// se utilizar a aberta retorna e não abre outra,
// caso contrário sai do for e abre outra igual
if(qst == 0){
return;
}else if(qst == 1){
break;
}
}
}
this.telaDesktop.add(tela); //adiciona na tela
tela.setVisible(true); // seta visivel
this.cascade(); //coloca em cascata para deixar "pratico"
}
A função para colocar em cascata:
private void cascade() {
JDesktopPane desk = this.getTelaDesktop(); // JDesktopPane
Rectangle dBounds = desk.getBounds(); // Bordas do JDesktopPane
int separation = 25; // distancia entre as janelas
// Pega todos os frames e organiza, o ultimo fica mais em baido e mais pra cima
int i = desk.getAllFrames().length; // quantidade de frames
for (JInternalFrame f : desk.getAllFrames()) {
f.setLocation(i*separation, i*separation);
i--; //mutiplicador
}
}
Exemplos de como chamar depois:
this.addTelaDesk(new TelaFuncionarios(null));
String matricula = JOptionPane.showInputDialog("Digite a matrícula do funcionário:");
this.addTelaDesk(new TelaFuncionarios(matricula));
Pra mim ta funcionando bem como quero, mas qualquer sugestão é bem vinda!