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!
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…
Ok drsmachado!
Obrigado pela dica!
Vou buscar informações sobre “menuItemFactory” e, chegando a uma conclusão, posto aqui!!!
Valeu!
Pow pessoal! Juro que tentei encontrar algo parecido mas ainda estou tendo bastante dificuldade.
Alguém teria algum exemplo?
Obrigado!
Rapaz eu tambem tinha essa dúvida como não encontrei nenhuma resposta fiz da seguinte maneira.
[code]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);
}
}
}[/code]
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.
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!
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!