Problema com jInternalFrame chamando outro jInternalFrame

7 respostas
I

Galera sou novo no forum e gostaria de tirar uma duvida que esta me tirando o sono.

Estou desenvolvendo um sistema para meu trabalho de faculdade e estou tendo problemas.

Seguinte criei uma tela principal utilizando o JFrame e JDesktopPane com menu.
Quando acesso uma determinada função criei uma nova janela utilizando o JInternalFrame(Browser).
Nesta tela coloquei botões e um JTable com o JScrollPane.
Até ai tudo bem… funcionando perfeitamente.

Porem em um dos botões criados estou criando uma outra classe tambem utilizando o JInternalFrame(Form) porem ao abrir esta janela a primeira continua aparecendo atraz dela com os botões e tabela podendo clicar nos botões e tudo mais.

Então gostaria de quando abrisse o segundo JInternalFrame que pertence ao primeiro aparecesse apenas a tela nova deixando a tela de traz escondida.

Inclui a segunda JInternalFrame dando um .add() no objeto da primeira. Acho que este é o erro mas não sei como fazer de outro jeito.

Por favor me ajudem!

7 Respostas

Anime

Oi,

Seu projeto é Web ou Desktop?

ViniGodoy

Não existem JInternalFrames modais. Então, não é possível abrir um sobre o outro e deixar o de trás desabilitado.

A alternativa seria, talvez, deixar o outro JInternalFrame invisível. Para isso, simplesmente chama setVisible(false) antes de abrir o próximo internalFrame. Será necessário também passar a referência do frame escondido para o aberto, para que ele possa tornar esse frame visível novamente ao fechar.

Entretanto, esse não é um comportamento muito comum em sistema operacional nenhum. O melhor é não usar o JInternalFrame e trabalhar só com JFrames e JDialogs, como toda aplicação Windows faz (nem mesmo o Word, que era famoso por ter esse recurso, o possui mais).

I

Anime:
Oi,

Seu projeto é Web ou Desktop?

Desktop…

I

ViniGodoy:
Não existem JInternalFrames modais. Então, não é possível abrir um sobre o outro e deixar o de trás desabilitado.

A alternativa seria, talvez, deixar o outro JInternalFrame invisível. Para isso, simplesmente chama setVisible(false) antes de abrir o próximo internalFrame. Será necessário também passar a referência do frame escondido para o aberto, para que ele possa tornar esse frame visível novamente ao fechar.

Entretanto, esse não é um comportamento muito comum em sistema operacional nenhum. O melhor é não usar o JInternalFrame e trabalhar só com JFrames e JDialogs, como toda aplicação Windows faz (nem mesmo o Word, que era famoso por ter esse recurso, o possui mais).

Entendi… acho que vou deixar uma jInternalFrame e a outra chamar uma JFrames menor, deve funcionar.
Muito obrigado!

ViniGodoy

ihorran:
Entendi… acho que vou deixar uma jInternalFrame e a outra chamar uma JFrames menor, deve funcionar.
Muito obrigado!

No caso, uma JDialog menor. E com a propriedade setModal(true).

I

ViniGodoy:
ihorran:
Entendi… acho que vou deixar uma jInternalFrame e a outra chamar uma JFrames menor, deve funcionar.
Muito obrigado!

No caso, uma JDialog menor. E com a propriedade setModal(true).

Ok… ficou melhor com a JDialog mesmo. agora posso continuar o meu projeto. Grato

Anime

ihorran:
Anime:
Oi,

Seu projeto é Web ou Desktop?

Desktop…

Só percebi agora, mas fico feliz por ter resolvido… :wink:

Criado 22 de março de 2011
Ultima resposta 23 de mar. de 2011
Respostas 7
Participantes 3