Arquitetura de um Sistema com JInternalFrame e JDesktop
5 respostas
lucao
Pessoal, estou acostumado a fazer os sistemas em swing com JFrame e vários JDialogs, mas acho esse estilo de sistema muito feio. Estive dando uma olhada em JDestkop e achei bem legal, mas houve uma dúvida.
Segundo os tutoriais, eu tenho aqui adicionar ao container JDesktop cada JInternalFrame. Mas com ficaria ? Porque com os JFrame eu fazia um JFrame principal e ia instanciando os JDialog. Vocês que têm experiencia no caso poderiam dar umas dicas ?
JInternalFrame com JDesktopPane é água com açúcar.
Costumo fazer o seguinte para manipular minhas telinhas:
Crio uma classe controladora intermediária entre um JDesktopPane e um JInternalFrame. Essa classe irá controlar todos os meus eventos de chamada de tela. Nela as telas são chamadas em singleton (caso eu queira apenas chamar uma instância de cada JInternalFrame, passo nela a referência do meu JDesktopPane que consequentimente passo para os meus frames internos.
Dessa forma controlo de forma simples qualquer chamada para os meus frames, criando Actions que possam fazer essa chamada.
Dentro da cada JInternalFrame seto uma propriedade na controladora para indicar que aquele frame já está ativado, assim evito repetição de frame (ou no javanês: criação de novas instâncias).
lucao
Ah, então não existe problema em adicionar ao container quando o sistema está rodando ? E quando eu fecho o JInternalFrame ? Como faço para tirar do container ?
Grinvon
lucao:
Ah, então não existe problema em adicionar ao container quando o sistema está rodando ? E quando eu fecho o JInternalFrame ? Como faço para tirar do container ?
Pode da simplesmente dispose() que ele sai, mas caso use singleton, deveria antes avisar a controladora que o frame está sendo finalizado, você pode capturar esse evento/estado de diversas maneiras.
lucao
Obrigado pessoal, foi de grande ajuda.
Agora que entramos no assunto de JInternalFrame, vocês poderiam me dizer quando é melhor usar JInternalFrame com JDesktop e quando é melhor usar JFrame com JDialog.