Abrir vários JInternalframe [RESOLVIDO]

Galera,
será q vcs podem me ajudar? estou desenvolvendo um aplicativo desktop, onde através de um jmenu são disparados eventos q abrem um determinado jinternalframe (criei um desktoppanel onde a internalframe é adicionada). O problema é o seguinte: Ao abrir um internalframe ficou perfeito, o problema eh quando abro outro,quando chamo outra opção do menu ele abre um novo internlaframe e sobrescreve o anterior, ou seja, se eu tiver no meio de um cadastro e quiser fazer uma consulta, ja era meu cadastro.
1 - Tem alguma forma de manter ativo varios jinternalframes ao mesmo tempo???
2 - Existe alguma opção de colocar um botao de fechar e de minimizar os internalframes?

Abçs

Como você está fazendo para chamar o JIntenalFrame?

Olá amigo

talvez isso ajude, são alguns fontes que usava recentemente:

boa sorte

Silvio Guedes

zoren,
criei um desktoppane na classe controle e quando o usuario clicar em algum jmenuitem o sistema abre um jinternalframe através do comando “meudesktop.add (frame)”.

silviogs,
baixei aqui o modelo q vc disponibilizou e já estou dando uma olhada. Em breve vou postar os resultados.
Obrigado.

fala galera…blz? to quebrando minha cabeça ainda…consegui ativar os botoes do jinternalframe. porem ainda estou com o mesmo problema. se abro outro jinternalframe ele sobrescreve o anterior e perco as informações. alguem teria alguma dica de como abrir varios jinternlaframes simultaneamente.? to pensando nisso pois no meio de um registro de vendas se o usuario quiser consultar o estoque nao precisa fechar a tela de cadastro. Obrigado galera

[CODE]

package controle;

import java.awt.Container;
import java.awt.Graphics;

import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;

import visao.TelaProduto;
import visao.TelaRegVendas;

public class ControlePrincipal {
private JFrame tela;
private Container desktopPane;

public ControlePrincipal (JFrame tela){
	this.tela = tela;
}
public void executar(String comando)throws Exception{

	if (comando.equals("sair")){
		System.exit(0);
	}
	if (comando.equals("ContProduto")){
		JDesktopPane desktop1 = new JDesktopPane();
		TelaProduto t = new TelaProduto();
		desktop1.add(t);
		desktop1.setOpaque(false);
		tela.setContentPane(desktop1);
		t.setVisible(true);
		t.setClosable(true);
	}

	if (comando.equals("RegVendas")){
		JDesktopPane desktop2 = new JDesktopPane();
		TelaRegVendas t = new TelaRegVendas();
		desktop2.add(t);
		desktop2.setOpaque(false);
		tela.setContentPane(desktop2);
		t.setVisible(true);
		t.setClosable(true);
	}

		}

[/CODE]

Então cara, seu erro é o seguinte

em cada if vc cria um jDesktopPane diferente

coloca a linha que cria eles antes dos if

se vc criar ele de novo e adicionar, o antigo vai desaparecer

if (comando.equals("ContProduto")){ 
JDesktopPane desktop1 = new JDesktopPane(); // <-- essa linha tem que ir no construtor
TelaProduto t = new TelaProduto(); 
desktop1.add(t); 
desktop1.setOpaque(false); 
tela.setContentPane(desktop1); 
t.setVisible(true); 
t.setClosable(true); 
} 

if (comando.equals("RegVendas")){ 
JDesktopPane desktop2 = new JDesktopPane(); // <-- essa aqui está sobrando, vc apaga ela
TelaRegVendas t = new TelaRegVendas(); 
desktop2.add(t); 
desktop2.setOpaque(false); 
tela.setContentPane(desktop2); 
t.setVisible(true); 
t.setClosable(true); 
} 

depos dessas modificações, é só vc adicionar os dois JInternalFrame no mesmo JDesktopPane

blz, kra entendi…Era assim que eu estava fazendo antes.
só mais uma dúvida. Ao abrir o proximo jinternalframe, ele se coloca na frente do anterior, onde inclui nele um botao de fechar “t.setClosable(true)”. Ao fechá-lo, como vc me disse, o anterior ja está criado, porém não aparece automaticamente. Será que tá faltando ainda algum comando?

Exemplo:
imagina dois jinternalframes abertos um acima do outro. Fecho oq ta na frente e aparece oq estava por tras.

Kra. Obrigado mesmo.

[code]

JDesktopPane desktop1 = new JDesktopPane();

if (comando.equals(“ContProduto”)){
TelaProduto t = new TelaProduto();
desktop1.add(t);
desktop1.setOpaque(false);
tela.setContentPane(desktop1);
t.setVisible(true);
t.setClosable(true);
}

if (comando.equals(“RegVendas”)){
TelaRegVendas t = new TelaRegVendas();
desktop1.add(t);
desktop1.setOpaque(false);
tela.setContentPane(desktop1);
t.setVisible(true);
t.setClosable(true);
}

[\code]

Não entendi muito bem, mais qdo vc fechar o da frente o de tras vai ficar mostrando, não é??

Isso. Imagina uma tela de cadastro. No meio do cadastro, desejo realizar uma consulta. Chamei a tela de consulta. Após a consulta, fecho essa janela. A tela que deverá estar ativa é a do cadastro q tinha ficado em segundo plano, para q eu continue o meu cadastro.
Mas não é isso o que está acontecendo. Quando fecho esta segunda tela, a anterior não aparece. Crei q ela deve estar ativa e falta algum comando só pra mostrar ela…será?

Mais uma vez obrigado kra.

é q vc recria o JDesktopPane qdo clica no botão

coloca a linha que cria ele no construtor da classe que vai funcionar

Blz, entendi ja…vou testar e logo apos vou testar os resultados.
vlw kra

Kra…era exatamente isso q eu queira. Seguindo sua dica consegui abrir varios jinternalframes simultaneamente.
obrigado pela paciencia…lol