Como desabilitar dados de um formulario em um Jinternalframe através de um Jframe

1 resposta
programaçãojava
G

Olá a todos, estou com uma duvida. Estou criando um sistema de emissão de ordens de serviço, nele eu quero controlar a permissão de acesso por grupo de usuários mas estou enfrentando um sério problema, possuo um menu principal da aplicação onde tenho uma String que guarda o valor do perfil de acesso do usuario quando efetua o login, nesse menu possuo um JdesktopPane e as telas dele são todas JinternalFrames, eu gostaria de poder habilitar ou desabilitar botões dos JinternalFrames de forma dinamica, por exemplo ao abrir a tela ordens de servico se o usuario tem permissão de excluir ordem ele habilita o botão excluir, eu criei uma String na JInternalFrame de ordens de serviço que busca o valor, só que como os componentes carregam quando dou um OSColunas OS = new OSColunas(); o valor do construtor vem sempre nulo. Alguém conseguiria me ajudar?

Segue metodo que chama o JinternalFrame e dados do JInternalFrame:

no menu Jframe:

Param pm = new Param();

pm.setPerfil(Perfil);

OSColunas OS = new OSColunas();

OS.CheckPerfil(pm);

OS.setVisible(true);

Desktop.add(OS);

no JinternalFrame:

public OSColunas() {

initComponents();

con = conecta.getConnection();

telaDefault();

}
public void CheckPerfil(Param pm){

Perfil = pm.getPerfil();

System.out.println(Perfil);

}
public TelaDefault(){

String Query = SELECT * from tab_nivel where nomenivel = ?;

try {

stm = con.prepareStatement(Query);

stm.setString(1, Perfil);

rs = stm.executeQuery();

if (rs.next()) {

BtnNovo.setEnabled(rs.getBoolean(oscol_cadastra));

BtnExclui.setEnabled(rs.getBoolean(oscol_exclui));
}
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, "Erro ao tentar buscar dados de perfil de usuario no banco :" + e);
    }

}

1 Resposta

Andrauss

Olá, é bem simples, crie um método em seus internalFrames que desabilite os botões, no construtor do seu internal frame você deve receber o perfil e chamar o método para desabilitar os campos dependendo do perfil recebido.
Exemplificando com código:

public class MeuIFrame{

      public MeuIFrame(String perfil) {
           /*Códigos Omitidos*/
           metodoDesabilitaCampos(perfil) ;
      }
}


public class MeuJFrame{


   private void abrirIFrame(){
           /*Códigos Omitidos*/
           MeuIFrame ifr = new MeuIFrame(perfil);
           /*Códigos Omitidos*/
   }

}
Criado 9 de junho de 2017
Ultima resposta 9 de jun. de 2017
Respostas 1
Participantes 2