Estou tentando fazer algo que não sei se tem como, andei pesquisando e não vi muito sobre isso mas vamos lá.
Tenho o jFrame pai e duas jInternalFrame filhas, uma Cadastro e a outra Consulta, na filha consulta há a possibilidade de editar um cadastro que no caso abriria a outra filha Cadastro para essa edição.
Gostaria de saber como chamar a jIF Cadastro através da jIF Consulta, chamar uma Filha através de outra Filha sendo elas de classes separadas, ambas rodando dentro do JFrame Pai através do jDesktop.
Olá,
Uma solução para o que você quer é passar o JDesktop no construtor do primeiro jInternalFrame e depois passar o JDesktop no construtor do segundo JInternalFrame
[]s
Exato!!
Como o MaiqueL disse, a saída é usar um JDesktop!
[quote=tkx]Exato!!
Como o MaiqueL disse, a saída é usar um JDesktop![/quote]
Eu já uso JDesktop, mas sou novo nesse mundo imenso de java, não entendo certos termos, como assim passar o JDesktop???
[quote=acomerlatto][quote=tkx]Exato!!
Como o MaiqueL disse, a saída é usar um JDesktop![/quote]
Eu já uso JDesktop, mas sou novo nesse mundo imenso de java, não entendo certos termos, como assim passar o JDesktop???[/quote]
Imagine que aqui temos
public class Frame extends JFrame{
private JDesktop desktop;
//evento que chama um internalFrame
JInternalFrame internalFrame = new JInternalFrame(desktop);//passa aqui o JDesktopPane
internalFrame.setVisible(true);
desktop.add(internalFrame);
}
classe internalFrame temos
public class JInternalFrame{
private JDesktopPane desktop;
public class JInternalFrame(JDesktop desktop){
this.desktop=desktop;
}
//evento do internalFrame cria novo JInternalFrame
JInternalFrame newFrame = new JInternalFrame()
desktop.add(newFrame);
newFrame.setVisible(true);
}
note que no construtor do internalFrame eu estou passando o JDesktop
[]s
Work
Agora outra dúvida, eu abri essa nova janela filha Cadastro, dou dispose na filha anterior Consulta, e se ao alterar o cadastro eu querer abrir a janela de consulta novamente, mas de uma filha para a outra? É só continuar propagando o desktop de uma para a outra?
No caso eu o passaria o Desktop da filha Consulta para a Cadastro e vice e versa?
Seria isso mesmo! Se vc colocar no construtor de cada JInternalFrame o desktop como parametro (e passar na chamada), vc pode ir chamado de filha pra filha!
[quote=acomerlatto]
Work
Agora outra dúvida, eu abri essa nova janela filha Cadastro, dou dispose na filha anterior Consulta, e se ao alterar o cadastro eu querer abrir a janela de consulta novamente, mas de uma filha para a outra? É só continuar propagando o desktop de uma para a outra?
No caso eu o passaria o Desktop da filha Consulta para a Cadastro e vice e versa?[/quote]
Essa maneira de propagar o JDesktopPane é uma maneira de encarar a tarefa de passar o JDesktopPane de uma Janela para outra.
Mas você pode também criar um metodo estático que passa o JDesktopPane do JFrame principal para outro JinternalFrame fica livre para escolher a forma que te agrada mais. 
[]s
Outra dúvida, quando eu faço o chamado, a jIF fica atrás da jIF que chamou, qual comando eu utilizo para que ela venha a frente?
JInternalFrame fr = new JInternalFrame();
fr.toFront();
fr.requestFocus();
Cuidado que não existe JInternalFrame modal.
Você até pode chamar outra janela, mas será possível o usuário voltar na anterior com um clique.
Galera surgiu um probleminha. Quando dou dispose nas minhas jIF eles não estão mais retornando.
Eis o código que uso para chamá-las:
if(cadFunc == null){
cadFunc = new funcionarios.CadFunc(workArea); // Passagem do Desktop na hora da criação como foi me informado
iframeCenter(cadFunc); // Centralizar o Frame no jDesktop
workArea.add(cadFunc);
cadFunc.setVisible(true);
}else{
iframeCenter(cadFunc);
cadFunc.setVisible(true);
}
Mas ao fechar a janela, ela não volta ‘-’