jInternalFrame + jFrame

11 respostas
A

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.

11 Respostas

M

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

T

Exato!!
Como o MaiqueL disse, a saída é usar um JDesktop!

A

tkx:
Exato!!
Como o MaiqueL disse, a saída é usar um JDesktop!

Eu já uso JDesktop, mas sou novo nesse mundo imenso de java, não entendo certos termos, como assim passar o JDesktop???

M

acomerlatto:
tkx:
Exato!!
Como o MaiqueL disse, a saída é usar um JDesktop!

Eu já uso JDesktop, mas sou novo nesse mundo imenso de java, não entendo certos termos, como assim passar o JDesktop???

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

A

:smiley: 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?

T

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!

M

acomerlatto:
:smiley: 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?

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. :smiley:

[]s

A

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?

T

JInternalFrame fr = new JInternalFrame(); fr.toFront(); fr.requestFocus();

V

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.

A

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 ‘-’

Criado 4 de novembro de 2012
Ultima resposta 6 de nov. de 2012
Respostas 11
Participantes 4