JFrame, JDialog, JInternalFrame - Quando usar cada uma?

11 respostas
M

Colegas,

Em que situação usar JFrame, JInternalFrame ou JDialog?

Muito obrigado,

Marques

11 Respostas

V

JFrame - Uma janela comum.
JDialog - Use geralmente para janelas modais. Idealmente, um JDialog não deve manipular classes de negócio diretamente. Deve só requisitar valor e devolver o valor lido.
JInternalPanel - Substitui os JFrames no caso de aplicações MDI. Ou seja, use-o quando você quiser que um Frame seja aberto dentro de outro Frame.

F

deixa eu ver se entendi,
um JFrame não pode ser modal?
sem ser MDI só o JDialog q devo usar pra forms modais?

V

Sim.

A classe JOptionPane até tem alguns forms MDI modais, mas foram implementados através de comandos obscuros da API, e só funcionam lá.

A

Então, tava precisando um dia desses de um JInternalFrame modal, ae busquei e encontrei umas implementações, mas todas me pareceram gambi, inclusive encontrei uma no site da propria Sun, mas não me senti bem e acabei nem usando. ViniGodoy o sr. não sabe alguma maneira de implementar um frame interno sem parecer gambiarra, o que eu precisaria saber para implementar algo do tipo?

T

Não use JDesktopPane nem JInternalFrame, a menos que você saiba exatamente o que está fazendo. A maior parte dos programas atuais não usa mais o esquema MDI por default. Use um JTabbedPane e/ou layout CardLayout.

A

Beleza, mas por que é desaconselhavel a utilização de MDI? Baixa performace, usabilidade, baixa manutenbilidade… enfim… qual o motivo? É que desenvolvo um sistema na empresa em que trabalho, e utilizo MDI e queria saber qual os problemas pra ir logo me precavendo.

V

Todos esses motivos. Além do fato de não existir MDI modal. Só com xunxo mesmo. Coisas como desenhar um glasspane sobre o painel debaixo. Olha, eu tentei várias alternativas, nenhuma delas funciona 100%.

O que você pode fazer (e foi o que fiz) é deixar um JDialog com “cara” de MDI, alterando as propriedades dela. Ela ainda flutuará sobre o JFrame, mas pelo menos fica com uma aparência mais padrão. Não me lembro de cabeça como faz isso, mas posso verificar, se você quiser.

F

To passando uma aplicação em delphi pra java

vou ter q fazer o formulario de entrada de dados em JDialog pois tem q ser modal

fiz com JPanel mais o formulário JPanel não tem a propriedade resizable

e eu preciso q ela seja false

ta certo eu usar o JDialog pro formulário q deve ser modal, e principal da aplicação?

V

Se tem que ser modal, sim.

A

Se você poder verificar pra min, eu agradeço muito.

V
Você ainda pode setar uma dessas decorações, além de FRAME:
NONE, PLAIN_DIALOG, INFORMATION_DIALOG, ERROR_DIALOG, COLOR_CHOOSER_DIALOG, FILE_CHOOSER_DIALOG, QUESTION_DIALOG, ou WARNING_DIALOG.

Você ainda pode setar uma dessas decorações, além de FRAME:
NONE, PLAIN_DIALOG, INFORMATION_DIALOG, ERROR_DIALOG, COLOR_CHOOSER_DIALOG, FILE_CHOOSER_DIALOG, QUESTION_DIALOG, ou WARNING_DIALOG.

Criado 14 de julho de 2009
Ultima resposta 16 de jul. de 2009
Respostas 11
Participantes 5