Olá pessoal, sou novo aqui no fórum e no mundo JAVA, bom antes de falar o meu problema vou dizer o que eu fiz.
1º Criei um Jframe usando a IDE NetBeans.
2º Coloquei um jMenuBar nesse Jframe.
3º Coloquei JdesktopPane. Agora vai o problema, para abrir um Jinternalframe faço o seguinte código:
MeuJinternalFrame jit = new MeuJinternalFrame();
jdesktopPane.add(jit);
jit.setvisible(true);
Blz até ai tudo bem, mas quando eu abro um segundo JinternalFrame eu verifico se o outro JinternalFrame anterior está aberto usando o seguinte codigo no segundo JinternalFrame:
PrimeiroJinternalFrame jit = new PrimeiroJinternalFrame();
jit.isVisible();
Ai está o problema, mesmo o JinternalFrame estando aberto no JdesktopPane, ele continua me retornando false! Tenho o mesmo problema quando preciso executar um método de um JinternalFrame em outro JinternalFrame. agora vou passar o código mostrando minha lógica:
[code]public class SegundoJinternalFrame extends javax.swing.JInternalFrame{
private void atualizartabela(){
PrimeiroJinternalFrame jit = new PrimeiroJinternalFrame();
if(jit.isVisible){
jit.atualizaTabela();
}
}
};[/code]
desculpem por favor se não soube me expressar corretamente, mas podem me ajudar com esse problema?
Cara eu também sou novo mas pelo oq eu entendo você ta insntaciando um objeto novo de PrimeiroJinternalFrame() mas no construtor dele você pediu pra iniciar o visible(true) ?
Toda vez que você usa a palavra “new” você cria uma nova janela. Se a classe da janela for a mesma, você ainda terá uma outra janela, só que igual a primeira.
Por isso, a janela que você abriu está realmente visível. Mas a nova janela, que você criou e testou, ainda não está.
Para resolver o problema, só passando o primeiro JInternalFrame como parâmetro para o segundo.
Ou fazendo com que seus internalframes sejam Singletons.
[quote=carloshsamaral]Cara eu também sou novo mas pelo oq eu entendo você ta insntaciando um objeto novo de PrimeiroJinternalFrame() mas no construtor dele você pediu pra iniciar o visible(true) ?
[/quote]
Não, era só para passar a ideia, eu instanciei Um objeto JinternalFrame e verifiquei se esse Objeto era visível com o método isVisible, esse código era só para passar a lógica do q eu estava tentando fazer na Classe do segundo JinternalFrame.
[quote=ViniGodoy]Toda vez que você usa a palavra “new” você cria uma nova janela. Se a classe da janela for a mesma, você ainda terá uma outra janela, só que igual a primeira.
Por isso, a janela que você abriu está realmente visível. Mas a nova janela, que você criou e testou, ainda não está.
Para resolver o problema, só passando o primeiro JInternalFrame como parâmetro para o segundo.
Ou fazendo com que seus internalframes sejam Singletons.[/quote]
Muito Obrigado ViniGodoy, este era meu erro mesmo, peguei a lógica logo vou implementar no meu código