No meu formulário, tenho 5 jPanels, dentro de cada alguns campos que serão preenchido no ato do cadastro. O que gostaria de deixar estes jPanels desabilitados, para que quando clicar no botão “novo”, estes possam ser habilitados.
Fiz este método:
Você está habilitando e desabilitando somente os seus jPanels, para habilitar e desabilitar campos ou botões você deve fazer o setEnabled para cada item!
Ou para facilitar, como o jPanel é um container, você pode criar um método de validação para fazer isso e passar o container desejado por parâmetro.
Ola Jovem, criei este método para vc. Ele bloqueia ou libera campos, de acordo com o que vc deseja:
public void bloquearLiberarCampos(boolean acao){
Component[] componentes = seuComponentePainelAqui.getComponents(); // altere para o nome da variavel do seu painel
for (Component componente : componentes) {
componente.setEnabled(acao);
}
}
Este é o código do seu botão, perceba que estou setando false, logo, ele irá deixar o setEnable como false (Bloqueando os campos).
Já que vc possui 5 painels, recomendo fazer da seguinte forma:
Coloque isso no Metodo Construtor:
private javax.swing.JPanel[] paineis; // isso é fora do metodo construtor
public SuaClasse(){
initComponents(); // acho q vc tem isso
paineis = new javax.swing.JPanel[5];
paineis[0] = jPanel1;
paineis[1] = jPanel2;
paineis[2] = jPanel3;
paineis[3] = jPanel4;
paineis[4] = jPanel5; // Eu coloco em cada indice do vetor, o painel que quero indicar
}
Ae o botão fica assim:
for (javax.swing.JPanel painel : paineis) {
bloquearLiberarCampos(painel, false);
}
E o método:
public void bloquearLiberarCampos(javax.swing.JPanel painel, boolean acao) {
Component[] componentes = painel.getComponents(); // altere para o nome da variavel do seu painel
for (Component componente : componentes) {
componente.setEnabled(acao);
}
}