JLayeredPane, JInternalFrame e JDesktopPane [Resolvido]

Boa noite,

Esses componentes: JLayeredPane, JInternalFrame e JDesktopPane; Pelo teste inicial que fiz são todos para trabalhar com interface com o usuário além de serem usados em conjuto.

Qual é o ponto forte e o fraco, entre esses, componentes?

[]s

O JTabbedPane permite dividir sua aplicação em abas. Ele faz com que usuário fique com suas ações concentradas em uma única tela. A menos que você organize bem o código, pode acabar com uma única e gigante classe, o que é péssimo para manutenção. Além disso, se você tiver muitas telas, terá que organizar a carga desse conteúdo, para que sua aplicação não ocupe o espaço de todas abertas de uma só vez (além de processar a carga de tudo, logo no início).

O JInternalPane é uma janela interna, tipica de aplicações MDI, como o Word antigo. Alguns usuários, como o Thingol, são radicalmente contra essas janelas, pois elas dão muitos problemas de manutenção, além de seu comportamento não ser 100% consistente com o do windows. Alguns dos bugs conhecidos são: não desaparecer a barra de títulos quando a janela maximiza, péssimo controle de que janela está sobre qual e não haver scrollbars no JDesktopPane.

O JDesktopPane nada mais é que a área onde o JInternalPane aparecerá.

Outras opções seriam usar JDialogs e JFrames. São a minha favorita. Os JDialogs devem ser usados para solicitar informações ao usuário, enquanto os JFrames fazem o trabalho bruto em si. Eu gosto de proibir que minhas JDialogs alterem objetos de negócio diretamente. Isso maximiza o reaproveitamento das dialogs. JTabbedPanes são usados junto com os frames em situações onde fazem sentido, geralmente, as mesmas que vemos em aplicativos como Word, não como substitutos dos JFrames.

Desculpa, não consegui visualizar, esse efeito semelhanete ocorre durante qual ação?

[]s

Desculpa, não consegui visualizar, esse efeito semelhanete ocorre durante qual ação?
[]s[/quote]

Desculpe, confundi os layeredPanes com os tabbedpanes quando escrevi. Você dificilmente irá usar um LayeredPane diretamente. Ele geralmente é usado para sobrepor vários painéis de tipos diferentes.

Boa tarde,

No caso do JLayeredPane, JFrame e JDialog:

  • JDialog, serão usadas em telas de pesquisa e pequenas inclusões de informações.

  • JFrame, será usado na tela principal onde irá conter: JMenus e diferentes telas (Cadastro de clientes, Cadastro de fornecedores, etc).

  • JLayeredPane, ira conter os componentes de tela, para cada interação (Cadastro de clientes, Cadastro de fornecedores, etc).

Esta é a forma de tirar melhor proveito? Ou é possivel, ter mais de um JFrame, dentro de outro JFrame?

Obrigado pela valiosa ajuda, até o momento, tem me ajudado muito.

[]s

De qualquer maneira, se seu projeto for meio complicado em termos de telas, você sempre pode usar uma base como o “NetBeans Platform” ou “NetBeans RCP”.

http://netbeans.org/features/platform/index.html

É relativamente simples escrever uma aplicação usando esse framework, se você entender corretamente seus conceitos.

Alguns exemplos de aplicações usando esse framework:

http://platform.netbeans.org/screenshots.html

O JLayeredPane não é uma janela. Como o nome diz é um “Pane”, uma espécie de painel.
E, geralmente, você não usa esse tipo de componente. Acho que nunca tive que criar um desses na vida.

Você pode fazer um JFrame abrir outro JFrame ou JDialog, sem problemas. Se quiser um JFrame que abra “no interior” de outro JFrame, use um JInternalPane e um JDesktopPane, mas esteja preparado para alguns inconvenientes que essas classes trazem (já citados ali em cima).

Desculpe ressucitar o tópico, mas respondendo eu estou usando JLayeredPane por que foi a unica forma que consegui adicionar uma imagem de fundo na minha GUI, ficando a imagem na ultima camada e os outros componentes da frame uma camada acima!

Isso é errado?

[quote=ViniGodoy]O JLayeredPane não é uma janela. Como o nome diz é um “Pane”, uma espécie de painel.
E, geralmente, você não usa esse tipo de componente. Acho que nunca tive que criar um desses na vida.[/quote]

Certo, no caso de um JFrame abrir outro do mesmo tipo, JFrame. Eu perco acesso ao JMenu, do JFrame principal?

[]s

[quote=entanglement]De qualquer maneira, se seu projeto for meio complicado em termos de telas, você sempre pode usar uma base como o “NetBeans Platform” ou “NetBeans RCP”.

http://netbeans.org/features/platform/index.html

É relativamente simples escrever uma aplicação usando esse framework, se você entender corretamente seus conceitos.

Alguns exemplos de aplicações usando esse framework:

http://platform.netbeans.org/screenshots.html[/quote]

Estou dando uma olhada, os aplicativos gerados são impressionantes.

Obrigado.

[]s

Não. JFrames são janelas separadas. Um JFrame não impede acesso a outro JFrame. A única classe que impede acesso é o JDialog, quando ele é modal. Aí, até que vc feche o dialog, nada abaixo dele pode ser clicado.

Aproveitando este tópico.

Estou criando um aplicativo com vários JFrames e JDialogs. Na minha aplicação quando abro vários JFrames, na barra de tarefas do windows, ficam varios icones dos JFrames, parecendo como se fossem aplicações separadas. Existe alguma forma de agrupar este frames na barra de tarefas?

Infelizmente, não tem não. O Windows irá agrupa-los sozinho.
Mas é como quando vc abre várias janelas do Word, por exemplo.

Esse comportamento também pode variar de SO para SO.

Boa noite,

Obrigado pela ajuda, vou começar a usar essas possibilidades. Para ver na prática a qual vou me adaptar melhor.

[]s