Components de um JFrame devem poder ser vistos por toda a interface?
4 respostas
R
rafaelmarch
Fala Pessoal,
estou com uma dúvida uma dúvida a respeito do projeto de GUI’s Swing em Java.
Tenho uma aplicação cujo frame principal é um JInternalFrame que possui um JMenuBar com diversas opções.
Obviamente, uma vez acionados qualquer uma destas opções um evento é gerado. Estes eventos são tratados no método actionPerformed(ActionEvent e). Até aí tudo bem. O problema é que o meu JInternalFrame deve ter como atributos TODOS os seus components, para que eu possa reconhecer a fonte do evento através de e.getSource().
Sendo assim, se o meu JInternalFrame tem, por exemplo, 25 JMenu’s cada um com 37 opções temos uma classe com 25x37 atributos, no mínimo ? Isso não me parece Java bem escrito !
Alguém tem uma alternativa inteligente para contornar este problema ?
estou com uma dúvida uma dúvida a respeito do projeto de GUI’s Swing em Java.
Tenho uma aplicação cujo frame principal é um JInternalFrame que possui um JMenuBar com diversas opções.
Obviamente, uma vez acionados qualquer uma destas opções um evento é gerado. Estes eventos são tratados no método actionPerformed(ActionEvent e). Até aí tudo bem. O problema é que o meu JInternalFrame deve ter como atributos TODOS os seus components, para que eu possa reconhecer a fonte do evento através de e.getSource().
Sendo assim, se o meu JInternalFrame tem, por exemplo, 25 JMenu’s cada um com 37 opções temos uma classe com 25x37 atributos, no mínimo ? Isso não me parece Java bem escrito !
Alguém tem uma alternativa inteligente para contornar este problema ?
[]'s,
Rafael March.
:arrow: Vc gerencia todos os seus componentes por JInternalFrame essa gerencia outras interfaces do JMenus ? , me parace um mix com um pensamento de polimorfismo com programação estruturada.
:idea: Existe o reuso desses componentes, para cada ação do JMenus ?
R
rafaelmarch
Desculpa Marcio,
mas pode ser mais claro ? Qual seria a melhor maneira de fazer algo deste tipo ? Como eu poderia fazer a reutilização de simples JMenus ?
Minha situação é exatamente como foi descrita: um JInternalFrame com diversos JMenus, que por sua vez possuem diversos JMenuItems. Para cada um destes itens eu quero abrir um frame que conterá informações diferentes. Para isso, trato os eventos através do método actionPerformed(ActionEvent e). O problema é que tenho que ter todos estes itens (ou existe alguma outra forma ?) como atributos do meu JInternalFrame para que possa fazer um milhão de if’s (if(e.getSource.equals(JMenuItemn)), por exemplo) para fazer o tratamento diferente para cada um. Simples assim. O problema é que isso implicaria em muitos atributos e muitos if’s. Há de existir alguma forma mais orientada a objeto de fazer isso !
[]'s,
Rafael March.
peerless
Bom, vamos lá:
1º - Você não deve ter preguiça de fazer os passos 2-4
2º - Seus menus devem ser dinâmicos (faça uma tabela dinamica no banco para isso, com: id, idpai, descricao, codename) e monte o menu de forma recursiva
3º - codename será o identificador que chamará seus forms de uma fábrica de forms (PADRÃO FACTORY - PESQUISAR!), na hora da geração do menu dinamico, adicionaria uma action nele executando algo como (por ex): factory.getForm(codename).setVisible(true);
4º - É melhor que seu form principal seja um JFrame que CONTENHA um JInternalFrame
Marcio_Duran
rafaelmarch:
Desculpa Marcio,
mas pode ser mais claro ? Qual seria a melhor maneira de fazer algo deste tipo ? Como eu poderia fazer a reutilização de simples JMenus ?
Minha situação é exatamente como foi descrita: um JInternalFrame com diversos JMenus, que por sua vez possuem diversos JMenuItems. Para cada um destes itens eu quero abrir um frame que conterá informações diferentes. Para isso, trato os eventos através do método actionPerformed(ActionEvent e). O problema é que tenho que ter todos estes itens (ou existe alguma outra forma ?) como atributos do meu JInternalFrame para que possa fazer um milhão de if’s (if(e.getSource.equals(JMenuItemn)), por exemplo) para fazer o tratamento diferente para cada um. Simples assim. O problema é que isso implicaria em muitos atributos e muitos if’s. Há de existir alguma forma mais orientada a objeto de fazer isso !
[]'s,
Rafael March.
:arrow: Forma certa orientada a objeto eu diria forma de usar patterns que entendam as suas responsabilidades e objetos que saibam que vão fazer. Um exemplo para dar outra semantica a sua ideia.