Ter um JFrame (principal) com um JDesktopPane e dentro dele (jdesktop) trabalhar com os JInternalFrames?
ou trabalhar somente com JFrames?
como devo proceder?
Sou programador web e tenho um projeto desktop pra fazer, estou com algumas dúvidas então resolvi pedir ajuda à quem entende realmente de Java (Vocês)…
Típico programador iniciante Java:
a) Encanta-se com o JDesktopPane
b) Desenha um monte de JInternalFrames
c) A seguir, vem aqui perguntar se há um JInternalFrame que seja modal
d) Quando você diz que “as coisas não são bem assim” e que é complicado lidar com JInternalFrames, então o cara se desespera e diz que não pode assim, sem mais nem menos, desistir de tudo e refazer tudo
e) Aí você indica uma gambiarra com Glasspane para “imitar” a modalidade em JInternalFrames
f) O programador fica contente, mas logo ele fica desesperado de novo, porque em algum cliente o Glasspane acabou travando a aplicação inteirinha, não só o tal frame.
Dica: evite JDesktopPane; use JTabbedPane e JDialogs. Se puder, use alguma coisa pronta como o NetBeans Platform (mais simples) ou o Eclipse RCP (um pouco mais complicado) para desenvolver sua aplicação. Aí você vai ter um monte de coisas já prontas e vai evitar muitos problemas.
Valew pela dica thingol, apesar de trabalhar com java(pra web) faz 5 anos, sou um programador iniciante Java pra desktop…
já estou buscando referências sobre JTabbedPane e JDialogs…
quando você fala em usar as JTabbedPane, é tipo: tela principal chama o “Adicionar Cliente” ai se cria um tab para o cadastro de cliente e quando se acessa o “Cadastrar Produto” abre outra aba pra esse fim, seria isso +/- ?
Normalmente usamos JInternalFrames com JDesktopPane nas aplicações aqui funciona muito bem, quando precisamos de telas Modal, usamos JDialog, mas gosto de deixar para o usuário a liberade de acesso ao sistema. Não temos problemas quando a isso. Lógico que adicionamos algumas regras para validar se determinadas ações foram feitas, mas no final funciona bem.
[quote=thingol]Típico programador iniciante Java:
a) Encanta-se com o JDesktopPane
b) Desenha um monte de JInternalFrames
c) A seguir, vem aqui perguntar se há um JInternalFrame que seja modal
d) Quando você diz que “as coisas não são bem assim” e que é complicado lidar com JInternalFrames, então o cara se desespera e diz que não pode assim, sem mais nem menos, desistir de tudo e refazer tudo
e) Aí você indica uma gambiarra com Glasspane para “imitar” a modalidade em JInternalFrames
f) O programador fica contente, mas logo ele fica desesperado de novo, porque em algum cliente o Glasspane acabou travando a aplicação inteirinha, não só o tal frame.
Dica: evite JDesktopPane; use JTabbedPane e JDialogs. Se puder, use alguma coisa pronta como o NetBeans Platform (mais simples) ou o Eclipse RCP (um pouco mais complicado) para desenvolver sua aplicação. Aí você vai ter um monte de coisas já prontas e vai evitar muitos problemas. [/quote]
Discordo completamente dessa ideia.
Minhas dicas.:
1- Não existe problemas em trabalhar com JInternalFrames se você estuda-los e souber usa-los.
2- JDesktopPane é “base” para sistemas desktop com telas.
3- No lugar de transformar JInternalFrames em modal, pq não desabilitar os JMenu’s que chamam os JInternalFrame para não possibilitar ao usuario abrir 2 telas ao mesmo tempo?
4- Que usar janelas do tipo modal? use JDialog!
5- Aprenda a programar sem precisar de IDE’s Graficas! Ter tudo pronto é facil, dificil é fazer (como se falava no meu trabalho) na unha!
Utilizando ambientes graficos (Arrastar botoes, puxar etc…) você não aprende a programar e sim a facilitar a sua vida. E quando você for para um emprego que não possibilitem o uso de NetBeans? apenas Eclipse sem pluggins ou outra IDE sem ambiente grafico??
6- Consulte muito a API (Ela será seu anjo da guarda rs)
1- Não existe problemas em trabalhar com JInternalFrames se você estuda-los e souber usa-los.
2- JDesktopPane é “base” para sistemas desktop com telas.
3- No lugar de transformar JInternalFrames em modal, pq não desabilitar os JMenu’s que chamam os JInternalFrame para não possibilitar ao usuario abrir 2 telas ao mesmo tempo?
4- Que usar janelas do tipo modal? use JDialog!
6- Aprenda a programar sem precisar de IDE’s Graficas! Ter tudo pronto é facil, dificil é fazer (como se falava no meu trabalho) na unha!
Utilizando ambientes graficos (Arrastar botoes, puxar etc…) você não aprende a programar e sim a facilitar a sua vida. E quando você for para um emprego que não possibilitem o uso de NetBeans? apenas Eclipse sem pluggins ou outra IDE sem ambiente grafico??
7- Consulte muito a API (Ela será seu anjo da guarda rs)
Tchauzin!
Tchauzin![/quote]
Faltou o 5 hehehehhe.
A respeito de IDEs, acredito que todo mundo que trabalha na área tem que ter flexibilidade para usar o melhor para cada serviço. E não como negar na facilidade do Drag’n’Drop de compoenentes que o netbeans proporciona.
Em desenvolvimento de Software oq conta não é o que você gosta, e sim o que é melhor para essa tarefa.
Maaaaaaaaasssss
Um embasamento do funcionamento na “unha” do Swing é fundamental, até pra quem usar Drag’n’Drop, nem tudo pode ser feito com arrastar e soltar.
[quote=lina]
3- No lugar de transformar JInternalFrames em modal, pq não desabilitar os JMenu’s que chamam os JInternalFrame para não possibilitar ao usuario abrir 2 telas ao mesmo tempo?[/quote]a minha idéia para esse caso era manter tipo um histórico(um Map por exemplo) das dos frames (ou abas) aberto e quando fosse chamado a mesma tela seria exibida a tela já aberta…
[quote=lina]
5- Aprenda a programar sem precisar de IDE’s Graficas! Ter tudo pronto é facil, dificil é fazer (como se falava no meu trabalho) na unha!
Utilizando ambientes graficos (Arrastar botoes, puxar etc…) você não aprende a programar e sim a facilitar a sua vida. E quando você for para um emprego que não possibilitem o uso de NetBeans? apenas Eclipse sem pluggins ou outra IDE sem ambiente grafico??
[/quote]nesse caso eu iria usar a IDE para desenhar as telas, mas a parte de ligação com os dados (do banco) eu faria “na mão” mesmo, sem usar o bastãozinho mágico: “Criar CRUD”…
Thingol e Lina,
consigo concordar(e discordar) ao mesmo tempo dos dois!
O problema de criar aplicações seguindo o velho MDI(em português:Interface de Múltiplos Documentos),
é que da ao usuário a chance de fazer muitas “cagadas” (como um problema que eu já tive, de uma InternalFrame ficar presa a uma thread sendo usada por outra e PARECER que foi destruída-Não, não foi problema meu de concorrencia, e sim de uma thread do swing malcomportada), dada a natureza limitada delas(como não ser modal é apenas um exemplo disso), e coisas como a ausência de uma interface “PAI” para JFrame e JInternalFrame para que um único handler de evento pudesse ouvir tanto um como outro.Isso dá diferenças de comportamento entre uma APP multi jframe e uma usando JDesktop, o o problema do glasspane é apenas um deles.Há algumas limitações no JLayeredPane(que o JDesktopPane extende), que no passado davam muitas dores de cabeça, principalmente para a mudança de camadas de transição de componentes.Preferia até que existisse uma Interface para customização.
Minha última grande aplicação swing foi uma app para análise de processo fiscal de IPTU, com cerca
de 115 campos usando JTabbedPane com 6 abas(usando JFormsLayout).Detalhe: os campos CONVERSAVAM entre si, entre eles 16 comboboxes que mudava em uma, alterava em outro campo um dado valor.Não houveram grandes problemas de concorrência, só pequenos problemas em relação a formatação e foco(lembre-se que são115 componentes interagindo entre si).
Minha próxima app será um monitor de performance de material para o setor elétrico, e pretendo usar a
mesma abordagem.Aposentei o uso de JDesktopFrame.Só uso para exemplos rápidos ou quando preciso mostrar algo que já tenho pronto aqui.
E pelo que eu ouvi Eclipse RCP é um tiro de 12 no saco(segundo 2 amigos meus que usaram).Quando dá problemas, são PROBLEMAS, mas nunca usei.Prefiro o método macho de pegar Byte na unha e montar tudo na mão com JForms layout ou miglayout.E me dá nos nervos aquele GroupLayout do NetBeans. :shock:
E respondendo a lina essa questão:
Não, não é.É apenas um dos swingcontainers,(como JPanel,JTextPane,JEditorPane, JSplitPane,JTabbedPane, JDesktopPane, JInternalFrame,JScrollPane,JViewport…tem mais?Não lembro…rsrs) que podem ser combinados entre si para produzirem uma app.
[quote=Ironlynx]Thingol e Lina,
consigo concordar(e discordar) ao mesmo tempo dos dois!
O problema de criar aplicações seguindo o velho MDI(em português:Interface de Múltiplos Documentos),
é que da ao usuário a chance de fazer muitas “cagadas” (como um problema que eu já tive, de uma InternalFrame ficar presa a uma thread sendo usada por outra e PARECER que foi destruída-Não, não foi problema meu de concorrencia, e sim de uma thread do swing malcomportada), dada a natureza limitada delas(como não ser modal é apenas um exemplo disso), e coisas como a ausência de uma interface “PAI” para JFrame e JInternalFrame para que um único handler de evento pudesse ouvir tanto um como outro.Isso dá diferenças de comportamento entre uma APP multi jframe e uma usando JDesktop, o o problema do glasspane é apenas um deles.Há algumas limitações no JLayeredPane(que o JDesktopPane extende), que no passado davam muitas dores de cabeça, principalmente para a mudança de camadas de transição de componentes.Preferia até que existisse uma Interface para customização.
Minha última grande aplicação swing foi uma app para análise de processo fiscal de IPTU, com cerca
de 115 campos usando JTabbedPane com 6 abas(usando JFormsLayout).Detalhe: os campos CONVERSAVAM entre si, entre eles 16 comboboxes que mudava em uma, alterava em outro campo um dado valor.Não houveram grandes problemas de concorrência, só pequenos problemas em relação a formatação e foco(lembre-se que são115 componentes interagindo entre si).
Minha próxima app será um monitor de performance de material para o setor elétrico, e pretendo usar a
mesma abordagem.Aposentei o uso de JDesktopFrame.Só uso para exemplos rápidos ou quando preciso mostrar algo que já tenho pronto aqui.
E pelo que eu ouvi Eclipse RCP é um tiro de 12 no saco(segundo 2 amigos meus que usaram).Quando dá problemas, são PROBLEMAS, mas nunca usei.Prefiro o método macho de pegar Byte na unha e montar tudo na mão com JForms layout ou miglayout.E me dá nos nervos aquele GroupLayout do NetBeans. :shock:
E respondendo a lina essa questão:
Não, não é.É apenas um dos swingcontainers,(como JPanel,JTextPane,JEditorPane, JSplitPane,JTabbedPane, JDesktopPane, JInternalFrame,JScrollPane,JViewport…tem mais?Não lembro…rsrs) que podem ser combinados entre si para produzirem uma app.
[/quote]
Oi,
Sobre JDesktopPane… claro que á apenas um dos swingcontainers! Claro que combinando todos os componentes, eles irão formar um JDesktopMegaZordPane (que palha)…
Bom…O que eu queria dizer é o seguinte.: Logo que se fala em aplicação Desktop em Java, nós pensamos: Que componente usar? ou melhor, como não deixar a minha telinha (que chamo pelo JMenu) não sair de dentro da minha area de menu? “AaA é claro! Você tem que ter um JDesktopPane junto com JInternalFrames”