[RESOLVIDO] isCellEditable, como proceder?

4 respostas Resolvido
java
G

Alguém pode me dar uma ajuda para bloquear e desbloquear células de uma jtable? eu fazia com 1 com base em uma condição, mas agora preciso de 3.

public boolean isCellEditable(int linha, int coluna) {
    switch (coluna) {
        case 11:
        case 12:
        case 13:

            String tipo = (String) getValueAt(linha, 8);
            String tipo1 = (String) getValueAt(linha, 9);
            String tipo2 = (String) getValueAt(linha, 10);
            if (tipo != null) {
                switch (tipo) {
                    case "1":
                        return coluna == 11;
                    default:
                        return false;
                }
            }
            if (tipo1 != null) {
                switch (tipo1) {
                    case "2":
                        return coluna == 12;
                    default:
                        return false;
                }
            }
            if (tipo2 != null) {
                switch (tipo2) {
                    case "3":
                        return coluna == 13;
                    default:
                        return false;
                }
            }
            return false;
        default:
            return false;
    }

}

Desde já agradeço!

4 Respostas

staroski

Quantas colunas você tem?
Quantas precisa habilitar/desabilitar?
Quais são as condições para habilitar ou desabilitar?

G

Bom dia, desculpa a demora!

Contando com a 0, são 14 colunas.

Estarei habilitando e desabilitando 3 colunas (11,12,13).

As condições são as seguintes:
se na coluna 8 estiver o valor = 1 -> abre célula 11
se na coluna 9 estiver o valor = 2 -> abre célula 12
se na coluna 10 estiver o valor = 3 -> abre célula 13

Obs: Eu consegui fazer com if e else, mas quando tenho 1 e 2 na mesma linha, ele apenas abre uma célula ao invés de abir duas.

staroski
Solucao aceita
public boolean isCellEditable(int linha, int coluna) {
    switch (coluna) {
        case 11:
            // se na coluna 8 estiver o valor = 1 -> abre célula 11
            return "1".equals(getValueAt(linha, 8));
        case 12:
            // se na coluna 9 estiver o valor = 2 -> abre célula 12
            return "2".equals(getValueAt(linha, 9));
        case 13:
            // se na coluna 10 estiver o valor = 3 -> abre célula 13
            return "3".equals(getValueAt(linha, 10));
        default:
            return false;
    }
}
G

Muito obrigado, deu certinho!

Criado 3 de dezembro de 2018
Ultima resposta 5 de dez. de 2018
Respostas 4
Participantes 2