[RESOLVIDO] Desabilitar edição de componentes em um container

4 respostas
r22ko

Saudações…

No desenvolvimento de uma aplicação estou tendo dificuldade para desabilitar a edição de componentes em um conteiner (jPanel).
Quero fazer algo do tipo.

//Desabilita todos os componentes de um Conteiner para Edição (ex. Panel)
public static void enableEditar(Container parent_des_e) {
    Component[] c = parent_des_e.getComponents();
        for(int j = 0; j < c.length; j++) {
            c[j].setEditable(false);
        }
}

Não existe o método setEditable para conteineres ?
Aguem pode me dar uma luz ? Pois não quero desabilitar os componentes com setEnabled(false).

Grato pela oportunidade

4 Respostas

B

Esta maneira que você esta fazendo não funciona? Parece que está bem genérico, talvez melhorar um loop para um for each e deixar mais bonito, mas não acho que seja um problema fazer um loop em todos os componentes de um container…

O que pode acontecer é se caso você encontrar um outro JPanel, ai você terá que fazer algo recursivo. Não testei mas pelo visto o setEnabled do JPanel não desabilita todos os componentes que estiverem dentro dele…

Qual o problema que você está tendo?

r22ko

Seguinte,

Quero bloquear a edição dos jComboBox, jTextField (etc…) dos conteineres.
Mas, com o método acima ou sem ele, não consigo.

Os jComboBox continuam funcionando. Se eu colocar setEnable(false) é alterada a aparencia do mesmo.

No método dá o seguinte erro.

symbol  : method setEditable(boolean)
location: class java.awt.Component
    c[j].setEditable(false);
1 error
FALHA NA CONSTRUÇÃO (tempo total: 1 segundo)
B

Desculpe só vi sua mensagem agora…
Confundi os métodos, pensei que você estava usando setEnabled, por isso não vi nenhum erro. Para usar o setEditable faça o seguinte:

public static void enableEditar(Container parent_des_e) {  
     Component[] c = parent_des_e.getComponents();  
         for(int j = 0; j < c.length; j++) {  
            if(c[j] instanceof JTextComponent) {
               JTextComponent cmp = (JTextComponent)c[j];
               cmp.setEditable(false);  
           }
         }  
 }
r22ko

Perfeito, obrigado pela força.

Criado 19 de agosto de 2009
Ultima resposta 21 de ago. de 2009
Respostas 4
Participantes 2