Menu Dinamico

5 respostas
C

Saudações!

Estou desenvolvendo uma esquema para habilitar ou não os itens de um JMenu de acordo com cada usuario. Os valores serão guardados em uma tabela no Banco de Dados.
Para cada item do menu, será inserido um registro na tabela para cada usuario onde haverá um campo boleano indicando se o item será habilitado ou não para aquele usuario.
Mas estou con dificuldades em desenvolver o codigo para setar as propriedades em tempo de execução.
Alguem tem alguma ideia de como faze-lo?

5 Respostas

kaique

basta você dar um select para cada usuário no banco e usar o retorno para cada item do menu no método setEnabled(boolean option) nos seus itens do menu. Assim você vai alterar em tempo de execução o comportamento de seu sistema.

[]'s.

C

Oi kaique!

Essa parte eu já fiz.
O problema é como pegar o campo que identifica o item de menu na tabela e executá-lo como se fosse o proprio menu.
Que codigo eu devo utilizar para este fim?
Seria algo como:

UsuarioMenuDAO usuariomenudao = new UsuarioMenuDAO();
    Set resultado = new HashSet();
    resultado = usuariomenudao.ListarMenu(usuario);
    Iterator iterator = resultado.iterator();
    while(iterator.hasNext()){
           UsuarioMenu usuariomenu = new UsuarioMenu();
	   usuariomenu = (UsuarioMenu) iterator.next();
           ////////////O QUE FAZE AGORA???////////////////
    }

Nesta última parte, como pegar o menu, que vem como uma string e passar para um objeto do tipo JMenu e executar o setEnabled???

fantomas

MINHA OPINIÃO…

  1. A leitura deverá ser recursiva.

  2. A cada item encontrado vc deverá criar a opção (JMenu / JMenuItem) correspondente e aplicar o conteúdo do label.

  3. Deverá criar a evento e associar a opção criada no item 2 a partir da string que diz qual é a classe que irá gerar o objeto correspondente a funcionalidade desejada ( com.xpto.agenda.PeopleController ).

  4. Ao termino da leitura (recursiva ) do cadastro do menu, a estrutura resultante deverá se anexada a uma janela (JFrame).

P.S Sim, este tipo de atividade é um pu#@ pé no s@#* mesmo.

flws

C

Então voce sugere criar o menu dinamicamente, não cria-lo previamente e alterar as opções, correto?

fantomas

Criar o menu dinamicamente é uma opção; é mais completa porem é mais difícil de atingir.

Se vc tem o menu construido previamente (acho que não havia entendido isto antes) a coisa muda de figura um pouco.

Para pensar sobre…

  1. Ao criar o menu vc poderia colocar a referencia em uma lista (ID ?); pois vc tera que localizar a opção depois.

  2. Quando ler o registro da opção no banco de dados vc procura a referencia correspondente na lista criada no item 1.

  3. Quando localizar o referencia basta habilitar / desabilitar a opção baseado na informação que está no banco.

flws

Criado 9 de dezembro de 2009
Ultima resposta 10 de dez. de 2009
Respostas 5
Participantes 3