Pessoal, dei uma pesquisada e achei algumas coisas, mas nao entendi muito bem
Eu utilizo defaultTableModel e gostaria de deixar desativado o modo de editar das linhas e colunas
como eu faço isso?
obrigado
Pessoal, dei uma pesquisada e achei algumas coisas, mas nao entendi muito bem
Eu utilizo defaultTableModel e gostaria de deixar desativado o modo de editar das linhas e colunas
como eu faço isso?
obrigado
Cara, largue de mão o defaultTableModel… Utilize o abastract Table Model, nele vc meche com toda a estrutura da tabela, inclusive quais colunas vc deseja deixar editáveis, ou não, sem mistério nenhum! 
Crie uma classe Table Model
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tablemodel;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import modelo.Pessoa;
public class TMPessoa extends AbstractTableModel {
private static final long serialVersionUID = 1L;
/**
* Essa lista armazenará os objetos do tipo {@link Cliente}
*/
private List<Pessoa> pessoa;
public TMPessoa() {
pessoa = new ArrayList<Pessoa>();
}
/**
* Criamos um construtor de conveniência para já popular a lista.
*/
public TMPessoa(List<Pessoa> lista) {
this();
pessoa.addAll(lista);
}
@Override
public Class<?> getColumnClass(int coluna) {
// todas as colunas representam uma String
return String.class;
}
@Override
public int getColumnCount() {
// esse método deve retornar o número de colunas.
//nesse caso 2 colunas
return 2;
}
@Override
public String getColumnName(int coluna) {
// vamos retornar o nome de cada coluna
switch (coluna) {
case 0:
return "Nome"; // o nome da primeira coluna
case 1:
return "Telefone"; // o nome da segunda
default:
return ""; // isso nunca deve ocorrer, pois temos s� 2 colunas
}
}
@Override
public int getRowCount() {
// retorna o número de linhas
return pessoa.size();
}
@Override
public Object getValueAt(int linha, int coluna) {
//Retorna o valor da celula selecionada onde
//Ex:
//int l = tabela.getSelectedRow();
//int c = tabela.getSelectedColumn();
//JOptionPane.showMessageDialog(null, tabela.getValueAt(l, c))
// primeiro vamos pegar o Cliente da linha
Pessoa c = pessoa.get(linha);
switch (coluna) {
case 0:
return c.getNome_razao();
case 1:
return c.getTel_comercial();
default:
return null; // isso nunca deve ocorrer, pois temos só2 colunas
}
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
return false;
case 1:
return false;
default:
return false;
}
}
@Override
public void setValueAt(Object valor, int linha, int coluna) {
// aqui devemos atualizar o valor de nossos Clientes
// vemos em qual linha ele está
Pessoa c = pessoa.get(linha);
// e vemos o que será atualizado
switch (coluna) {
case 0:
c.setNome_razao(valor.toString())
break;
case 1:
c.setTel_comercial(valor.toString());
break;
}
// É importante notificar os listeners a cada alteração
fireTableDataChanged();
}
public Long getCodigo(int linha) {
//Retorna o valor da celula selecionada onde
//Ex:
//int l = tabela.getSelectedRow();
//int codigo = modelo.getCodigo(l);
Pessoa c = pessoa.get(linha);
return c.getCodigo_pessoa();
}
/**
* Adiciona um novo Cliente e notifica os listeners que um novo
* registro foi adicionado.
*/
public void adiciona(Pessoa c) {
pessoa.add(c);
// informamos os listeners que a linha (size - 1) foi adicionada
//fireTableDataChanged();
fireTableRowsInserted(pessoa.size() - 1, pessoa.size() - 1);
}
/**
* Similar ao #adiciona(Cliente), porém para remover. Recebe o
* índice do cliente a ser removido. Se não souber o índice, use o método
* #getIndice(Cliente)} antes.
*/
public void remove(int indice) {
pessoa.remove(indice);
fireTableRowsDeleted(indice, indice);
}
/**
* Retorna o índice de determinado cliente.
*/
public int getIndice(Pessoa c) {
return pessoa.indexOf(c);
}
/**
* Adiciona todos os clientes na lista
*/
public void adicionaLista(List<Pessoa> lista) {
int i = pessoa.size();
pessoa.addAll(lista);
fireTableRowsInserted(i, i + lista.size());
}
/**
* Esvazia a lista.
*/
public void limpaLista() {
if (!pessoa.isEmpty()) {
int i = pessoa.size();
pessoa.clear();
fireTableRowsDeleted(0, i - 1);
}
}
public List<Pessoa> GetLista() {
return pessoa;
}
}
Essa parte eh responsavel pela parte de deixar desativado a edição das linhas e colunas:
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
return false;
case 1:
return false;
default:
return false;
}
}
E no seu programa basta vc chamar assim:
TableProdutos.setModel(tmpedprod);
//TableProdutos = sua tabela
//tmpedprod = sua Classe Abastract Table Model