Desabilitar jmenuitem dentro do jmenubar

Java

08/06/2011



Colegas,
tenho o seguinte
jMenu + jMenuBar + jMenuItem

Por exemplo:

Cadastros
Funcionario
Clientes
Compradores
Fornecedores

Tenho um tabela que Registra o nome que esta no JMenuItem (Funcionario, cliente, compradores e fornecedores) os mesmos tem a opção F ou V relativo a cada usuario. Se o na tabela o usuario João estiver com o
Funcionario = F
Cliente = F
Compradores = V
Fornecedores = F,
quando ele logar no sistema somente Compradores estaria habilitado.


Funcionario (Desabilitado. Propriedade Enabled = F)
Clientes (Desabilitado. Propriedade Enabled = F)
Compradores (Habilitado. Propriedade Enabled = V)
Fornecedores (Desabilitado. Propriedade Enabled = F)

A Tabela é como se segue:
T_Acesso
IdAcesso integer (autoincremento)
CaptionMenu varchar(25)
Permissao char(1) Aqui só permite V ou F.

Se não entenderem esse controle de acesso por favor me retornem.
Obrigado!


Nilo Souza

Nilo Souza

Curtidas 0

Respostas

Dyego Carmo

Dyego Carmo

08/06/2011

Eu não entendi o que voce realmente quer ... não consegue puxar isto do banco e varrer seu menu ?

Sugiro gravar o nome do componente junto no banco , assim nao precisará altgerar a ENGINE a cada menu novo :)


Valeu !
GOSTEI 0
Nilo Souza

Nilo Souza

08/06/2011

vou tentar explicar melhor   Imagine o Menu Cadastro (Jmenu) que esta no jmpPrincipal(JMenuBar) O menu cadastro tem o submenus (JMenuItem) Fornecedor, Produto, cliente   No bando de dados eu tenho uma tabela chamada Menu onde cadastrei os subMenus Fornecedor, Produto, cliente, com os seus respectivos menus, no caso em questão cadastro. Não aplicação cliente, faço um sql que me retorna a condição dos submenus se esta S ou N Caso esteja S, ele vai no menubar, procura o menuBar (Cadastro) varre os submenus (Fornecedor, Produto, cliente) e coloca o MeuItem conforme tabela ou seja: fornecedor.enable = True cliente.enable = false Produto.enable = True   Isso de acordo que eu der a permissão ao usuario. Ai para o usuário irá aperecer habilitado ou desabilitado. Deu para ter uma idéia melhor? Desde já obrigado     Tebela Menu campos Menu, submenu, acesso   Menu Cadastro   Submenu Fornecedor = S Cliente = N Produto  = S     PS. E justamente isso que vc pensou: "não consegue puxar isto do banco e varrer seu menu ?"
No access eu fiz tenho mais pratica e consegui criar um While varrendo o menu, mas no java sou iniciante, estou assistindo suas aulas sobre desvendando o swing, mas não consegui por em pratica.
GOSTEI 0
Dyego Carmo

Dyego Carmo

08/06/2011

Cole aqui o codigo que "voce tentou" , assim posso ver aonde vc falhou e corrigir :)

GOSTEI 0
Nilo Souza

Nilo Souza

08/06/2011

Preciso passar o valor do array para a função: LiberaTelasfilhas
Mas me retorna a mensagem de erro que o teste passado para a função não é um tipo compativel.
Sei que a variável é do tipo String e a função espera um java.swing.jMenu, mas eu não sei converter.
Minha ideia inicial foi varrer usando a função libera, mas tive a dificuldade acima.  
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                           ]
 
 
        String[] jMenu = {"jMenu1","jMenu2"};   
        String teste;   
         
        for (int i = 0; i< jMenu.length; i++){   
           
          teste = jMenu[i];   
           System.out.println(teste);     
                  
          LiberaTelasfilhas(teste);   
        }   

   
public void LiberaTelasfilhas(javax.swing.JMenu menuPesq) {     
        javax.swing.JMenuItem menuItem2 = null;     
        javax.swing.JMenu menu2 = null;     
        java.awt.Component[] componentsFilhos;             
         
        componentsFilhos = menuPesq.getMenuComponents();     
         
        for (int i = 0; i < componentsFilhos.length; i++) {     
         
            menuItem2 = menuPesq.getItem(i);                 
            System.out.println("    -> " + menuItem2.getText());                 
         
            if (componentsFilhos[i] instanceof javax.swing.JMenu) {     
                menu2 = ((javax.swing.JMenu) componentsFilhos[i]);     
                //Aqui eu tento pegar o nome do JMenu, mas ele retorno nulo, ja o texto vem normal.     
                System.out.println("    -> " + menuItem2.getName() +"-"+ menuItem2.getText());     
                LiberaTelasfilhas(menu2);     
            }     
        }     
    }    

GOSTEI 0
POSTAR