Bloquear JMenu

7 respostas
wamarra

Pessoal,

Tenho uma aplicação que quando o usuário apertar um botão, chama um método que dependendo da condição do if ele tem que bloquear alguns dos JMenus.
Já testei a chamada do método e a aplicação está chamando normalmente, porém não estou conseguindo bloquear os JMenu.
O código do método é o seguinte:

//Verifica o departamento para liberar o menu private void verificarDepartamento(){ if (comboLogDepartamento.getSelectedItem().equals("cobrança")) { contabilidade.setEnabled(false); // contabilidade é um JMenu gerencia.setEnabled(false); departamentoPessoal.setEnabled(false); recepcao.setEnabled(false); cadastramento.setEnabled(false); } }
Caso tenha algum erro ou falte algo,
Por favor me ajudem.
Valeu galera.

Wesley Marra

7 Respostas

heatcold

Adicione uma action na comboBox que diz:

if (comboLogDepartamento.getSelectedItem().equals("cobrança")) { contabilidade.setEnabled(false); // contabilidade é um JMenu gerencia.setEnabled(false); departamentoPessoal.setEnabled(false); recepcao.setEnabled(false); cadastramento.setEnabled(false); }

ou

Com certeza vai funcionar!

wamarra

Tentei a questão do if, mas, não deu certo:

Que no caso a opção do meu index no combo para comparação é 6.

como eu faço para adicionar uma action, sendo que eu chamo o método verificarDepartamento() apartir de um evento de um botão.

como devo fazer?

Valeu

heatcold

Ao invez de chamar esse metodo apartir de um botao, adicione um actionlistener ao combobox.

Exemplo inline:

jComboBox1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int n = jComboBox1.getSelectedIndex(); if (n == 6) { contabilidade.setEnabled(false); gerencia.setEnabled(false); departamentoPessoal.setEnabled(false); recepcao.setEnabled(false); cadastramento.setEnabled(false); } } });

Exemplo criado com o Netbeans:

private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) { int n = jComboBox1.getSelectedIndex(); if (n == 6) { contabilidade.setEnabled(false); gerencia.setEnabled(false); departamentoPessoal.setEnabled(false); recepcao.setEnabled(false); cadastramento.setEnabled(false); } }

wamarra

Boa noite
heatcold

Tentei o que me falou porém, não tive êxito.
Quando eu coloco a chamada do método verificarDepartamento() nas propriedades avançadas do Enabled do JFrame principal ele execulta o método independente da escolha do JComboBox.

Onde será que está errado?
Caso tenha outra ideia eu agradeço

valeu mesmo a força

Wesley Marra

heatcold

Crie um novo actionlistener para o combobox, como no primeiro exemplo.

jComboBox1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int n = jComboBox1.getSelectedIndex(); if (n == 6) { contabilidade.setEnabled(false); gerencia.setEnabled(false); departamentoPessoal.setEnabled(false); recepcao.setEnabled(false); cadastramento.setEnabled(false); } } });

É exatamente este código.

wamarra

seria isso:

comboLogDepartamento.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int n = comboLogDepartamento.getSelectedIndex(); if (n == 6) { contabilidade.setEnabled(false); juridico.setEnabled(false); departamentoPessoal.setEnabled(false); recepcao.setEnabled(false); cadastramento.setEnabled(false); } } });
Pois ele dá erro na linha:

ele não reconhe o comboLogDepartamento, que é o meu JComboBox

caso tenha alguma coisa errada me corrija por favor
novamente valeu

wamarra

Cara até que enfim consegui!!!

Tive que chamar o método verificarDepartamento() pelo evento do botão mesmo alterando algumas coisas, até mesmo porque criei outras condições. Por isso alterei de if para switch.
Tive que criar uma instância da classe Principal para tornar cada menu visível apenas para aquela opção escolhida no JComboBox e torná-la visível atravez do método setVisible()
Bom não sei se é o certo mas, funcionou… hehehe…

O código do método ficou assim:

//Verifica o departamento para liberar o menu private void verificarDepartamento(){ TelaPrincipal tp = new TelaPrincipal(); tp.setVisible(true); switch (comboLogDepartamento.getSelectedIndex()){ case 1: tp.juridico.setEnabled(true); tp.cobranca.setEnabled(false); tp.departamentoPessoal.setEnabled(false); tp.recepcao.setEnabled(false); tp.cadastramento.setEnabled(false); tp.contabilidade.setEnabled(false); break; case 2: tp.juridico.setEnabled(false); tp.cobranca.setEnabled(true); tp.departamentoPessoal.setEnabled(false); tp.recepcao.setEnabled(false); tp.cadastramento.setEnabled(false); tp.contabilidade.setEnabled(false); break; case 3: tp.juridico.setEnabled(false); tp.cobranca.setEnabled(false); tp.departamentoPessoal.setEnabled(true); tp.recepcao.setEnabled(false); tp.cadastramento.setEnabled(false); tp.contabilidade.setEnabled(false); break; case 4: tp.juridico.setEnabled(false); tp.cobranca.setEnabled(false); tp.departamentoPessoal.setEnabled(false); tp.recepcao.setEnabled(false); tp.cadastramento.setEnabled(false); tp.contabilidade.setEnabled(true); break; case 5: tp.juridico.setEnabled(false); tp.cobranca.setEnabled(false); tp.departamentoPessoal.setEnabled(false); tp.recepcao.setEnabled(true); tp.cadastramento.setEnabled(false); tp.contabilidade.setEnabled(false); break; case 6: tp.juridico.setEnabled(true); tp.cobranca.setEnabled(true); tp.departamentoPessoal.setEnabled(true); tp.recepcao.setEnabled(true); tp.cadastramento.setEnabled(true); tp.contabilidade.setEnabled(true); break; } }

Valeu Mesmo a força heatcold
Te devo essa.
Forte Abraço,

Wesley Marra

Criado 6 de novembro de 2007
Ultima resposta 6 de nov. de 2007
Respostas 7
Participantes 2