Fala gente boa!
Bom, desenvolvendo meu projeto final surgiu uma dúvida em uma verificação
que não faço ideia de como faço.
Vi em uma vídeo aula um moço criando um InternalFrame dentro de um DesktopPane
e deu certo a criação e a destruição :lol: também.
Só tem um detalhe: Como faço pra testar se a tela já existe? Não consegui pensar em
nenhuma forma!
Não faço ideia de como testar e o que testar.
Alguém pode me ajudar?
private void smCadFuncioActionPerformed(java.awt.event.ActionEvent evt) {
FCadFun n = new FCadFun();
this.painelPrincipal.add(n);
n.show();
}
Se não for pedir muito, como estou começando agora, poste pra mim explicadinho
com comentários ao lado. :oops:
Valeu galera!!!
brunokchimbo, pode verificar assim:
numa classe verifica se está aberto:
[code]public class VerificaInternalFramesAbertos{
public VerificaInternalFramesAbertos() {
}
/**
* Método que faz a verificação
* @param jDesktopPane jDesktopPane da aplicação
* @param frame Frame a ser verificado
* @return valor True se o Frame estiver instanciado
*/
public static Boolean verifica(JDesktopPane jDesktopPane,JInternalFrame internalFrame) { //construtor recebe o JDesktopPane e o JInternalFrame que deseja verififcar
Boolean valor = false;
JInternalFrame[] results;
results = jDesktopPane.getAllFrames(); // Retorna todos os internalFrames em um vetor
for (int i = 0 ; i < results.length ; i++){
if( results[i].equals(internalFrame) ){ //se o internalFrame pesquisado estiver na tela, retornar true
valor = true;
break;
}
}
return valor;
}
}[/code]
e dentro do menu de escolha pra nascer o jInternal frame (no meu caso estou abrindo o JInternalFrameEstados) coloco no actionperformed:
[code] private void jMenuItemCadastroEstadosActionPerformed(java.awt.event.ActionEvent evt) {
//se o evento capturado for uma chamada vinda do item Cadastro de Estados do menu...
if (evt.getSource() == jMenuItemCadastroEstados) {
//se for verdadeiro está ativo!
if (VerificaInternalFramesAbertos.verifica(jDesktopPane1, jInternalFrameEstados)) {
//independente da tela estar visível ou não, a tela é movida para frente
jDesktopPane1.moveToFront(jInternalFrameEstados);
try {
jInternalFrameEstados.setSelected(true);
} catch (PropertyVetoException ex) {
}
} else {
//instancia a tela de cadastro de Estados
jInternalFrameEstados = new JInternalFrameEstados();
//adiciona ao jDesktopPane
jDesktopPane1.add(jInternalFrameEstados);
//comando internos do Cadastro de Estados
jInternalFrameEstados.setVisible(true);
jInternalFrameEstados.setPosicao();
jInternalFrameEstados.desabilita();
jInternalFrameEstados.atualizacao();
}
}
} [/code]
Espero que sirva!