JMenu padrão + JMenu por usuário (vindos do Banco de Dados SQL) [RESOLVIDO]

6 respostas
S

Fala pessoal, td bem?
Bom, sou novo no fórum e em Java e tenho uma dúvida que descreverei em detalhes a seguir (juro que procurei neste e em outros fóruns, porém não encontrei nada parecido).

Vamos lá!
Tenho uma classe de nome “Inicio” que monta os Menus e SubMenus no meu JDesktopPane (visíveis, só os SubMenus “Login” e “Informações”);
Essa classe chama uma outra de nome “Acoes”(em outro pacote), que verifica o SubMenu clicado (getActionCommand()) e instancia a tela a ser aberta. No caso deste exemplo, chamo a LoginUI.
Enfim…
O funcionário entra com usuário e senha, que verifica no banco de dados quais os Menus (programas) que ele terá acesso.
Daí minha dúvida:
Eu gostaria de, tendo um array com os IDs das telas recuperados do banco, fazer com q os novos Menus sejam adicionados aos que já existiam antes do login.

(tentei ser o mais detalhista possível)…

Agradeço o auxílio e as dicas serão muito bem vindas!
Abraços e obrigado!

6 Respostas

drsmachado

Tendo um “menuItemFactory” fica fácil.
Você precisa iterar sobre o array (prefiro uma lista) e a cada novo “menu”, você o cria, coloca nele o bendito listener e insere no menubar…

S

Ok drsmachado!
Obrigado pela dica!

Vou buscar informações sobre “menuItemFactory” e, chegando a uma conclusão, posto aqui!!!
Valeu!

S

Pow pessoal! Juro que tentei encontrar algo parecido mas ainda estou tendo bastante dificuldade.
Alguém teria algum exemplo?

Obrigado!

V

Rapaz eu tambem tinha essa dúvida como não encontrei nenhuma resposta fiz da seguinte maneira.

private void sistemaVendas(){
                        JmenuBar barra = new JMenuBar();
			JMenu venda =  new JMenu("Vendas");
			barra.add(venda);
                        String menus = new String("orcamentos novo_orcamento lista_orcamento"); // Essa vai ser a string que você pega do banco de dados
			if(menus.contains("orcamentos")){
				JMenuItem orcamento = new JMenu("Orçamentos");
				
					if(menus.contains("novo_orcamento")){
						JMenuItem novoorcamento = new JMenuItem("Novo Orçamento");
						orcamento.add(novoorcamento);
						venda.add(orcamento);
					}
					if(menus.contains("listar_orcamento")){
						JMenuItem listarorcamento = new JMenuItem("Listar Orçamentos");
						orcamento.add(listarorcamento);
						venda.add(orcamento);
					}
			}	
	}

Bem é uma maneira gambiarra de fazer isso, deve haver melhores e mais faceis mas eu não encontrei.
Se você encontra alguma depois me avisa, xD.

S

Malaaaandro… que show!
Obrigado pelo exemplo!
Vou testar na minha aplicação!!! Claro que, se descobrir alguma outra forma, aviso por aqui também!!!

Abraços e obrigado pelo auxílio!

S

Bom galera… depois de várias consultas e a dica do victorp_farias, desenvolvi a criação dos Menus da seguinte forma:

1 - Criei um arrayList para receber as informações que vem do Banco de Dados (que são as permissões de acesso de cada usuário).
2 - Defini os atributos como seguem:

private JMenu menuLogistica = null;
	private JMenu menuComercial = null;
	private JMenu menuTecnologia = null;

3 - No “for”, que me traz as informações do List, adiciono os ítens e Menus de acordo com a pesquisa do banco:

for (int i = 0; i < usuarios.size(); i++) {

               if (usuarios.get(i).getCodTela().equals("3001")) {
					
	
			if( menuLogistica == null ){
				menuLogistica = new JMenu("Logística");
				barraMenu.add(menuLogistica);
			}
					
			JMenuItem item3001 = new JMenuItem(usuarios.get(i).getDescricao());
			item3001.setMnemonic(KeyEvent.VK_L);
			item3001.setEnabled(true);
			menuLogistica.add(item3001);
				
		}
		if (usuarios.get(i).getCodTela().equals("4001")) {
					
			if( menuComercial==null){
				menuComercial = new JMenu("Comercial");
				barraMenu.add(menuComercial);
			}
				
			JMenuItem item4001 = new JMenuItem(usuarios.get(i).getDescricao());
			item4001.setMnemonic(KeyEvent.VK_C);
			item4001.setEnabled(true);
			menuComercial.add(item4001);
					
		}
		if (usuarios.get(i).getCodTela().equals("4002")) {
					
			if( menuComercial==null){
				menuComercial = new JMenu("Comercial");
				barraMenu.add(menuComercial);
			}
				
		        JMenuItem item4002 = new JMenuItem(usuarios.get(i).getDescricao());
		        item4002.setMnemonic(KeyEvent.VK_R);
		        item4002.setEnabled(true);
		        menuComercial.add(item4002);
		}
}

Bom… essa foi a forma na qual encontrei uma solução para o meu “problema”!
Obrigado pela ajuda de todos!

Criado 1 de agosto de 2011
Ultima resposta 10 de ago. de 2011
Respostas 6
Participantes 3