Olá.
Já tenho uma tabela pronta.
Esta tabela tem a princípio 1 linha e 2 colunas.
Mas tenho um botão “+” que insere uma nova linha e um “-” que remove a linha selecionada.
Já defini que a primeira coluna é editável e a segunda não é.
Até aí beleza.
Porém quando eu inserir uma nova linha, quero que a linha anterior fique não editável.
Ou seja, o cara não vai mais poder mudar o valor da linha de cima.
Só terá a opção de apagar.
Com isso, quero que na ação do meu botão “+” ele adicione uma nova linha e faça com que a linha anterior fique não editável.
Tem algum método simples que faça isso?
Ou terei que criar um novo modelo pra minha tabela para definir isso?
Me ajudem ai, só falta isso pra minha aplicação ficar 100%.
Valeu por enquanto…
Amigo, realmente as coisas ficam muito mais fáceis quando se trabalha com um modelo (AbstractTableModel), considerando que você teria no seu modelo uma coleção assim List com o nome de lista, então seu método isCellEditable ficaria assim:
@Override
public boolean isCellEditable(int row, int col) {
// Penultima linha, linha anterior a que foi adicionada
if(row == lista.size()-2){
return false;
}
if (col > 0) {
return true;
} else {
return false;
}
}
Bom dia javer.
Já notei que tenho que usar este método, porém quero que este método funcione dinamicamente, ou seja, quando eu adicionar a nova linha, ele inibe a linha anterior.
Estas linhas não vão ser sempre editáveis ou não editáveis…isto vai depender de quantas linhas tem.
Me entende ?
Quero saber como faço para usar este método.
Já criei-o.
Agora tenho que chamá-lo em algum lugar ou ele é executado automaticamente ?
Esse método faz parte de uma classe que extende AbstractTableModel, me passe o seu código, tipo de dado que tá usando, tudo que puder, que eu tento montar um modelo pra você e te mostro como usar (depois disso você só vai querer usar modelos nas tabelas).
Não tens um código pronto ai para me mostrar isso?
É que meu código é muito grande e está na formatação da minha empresa…
Provavelmente será bem difícil de você entender!!!
Na verdade javer, não estou usando a JTable.
Estou usando uma outra classe que extende a JTable.
Ao dar new nesta classe, você tem a opção de passar um Object[][], que nele há cinco parâmetros possíveis para você definir.
São eles:
1º: Nome de exibição da coluna.
2º: ToolTipeText da coluna
3º: true se a coluna é editável ou false se não é.
4º: Cor da coluna
5º: Alinhamento da coluna.
Se notares, o 3º parâmetro já me define se quero a linha editável ou não.
Porém, eu defino true ou false e isto ficará fixo e não é isso que quero.
Quero que somente quando eu adicionar a nova linha ele fique não editável.
Até não acontecer isto, ele permanece editável.
Dentro desta classe, já tenho definido um DefaultTableModel e um isCellEditable.
Tenho como usar isto novamente ou tenho que criar outro modelo para a tabela ?
Dá uma olhada aqui, quem sabe você pega alguma idéia para mexer nessa sua classe, fica muito difícil te dizer o que fazer assim sem ver nada.
Um dos princípios do java é poder mostrar o código (ou parte dele) para que todos compartilhem também o problema ou a soluçã.
Veja bem, o DefaultTableModel (como o nome já diz) é um modelo básico que é automático quando se cria um JTable, para ter mais flexibilidade você usar como modelo uma classe que extenda o AbastractTableModel, aquele link que te passe tem exemplos.
Entenda os exemplos básicos primeiro, depois, mesmo que sua tabela seja criada a partir de uma classe que extende JTable, você pode adicionar um modelo a ela normalmente: