2 Dúvidas Simples... [RESOLVIDO]

13 respostas
pedroroxd

[color=red]1)[/color] Eu tenho uma tabela com os dados de um cliente (id, nome, endereço, etc)… Só que quando eu executo o programa, a pessoa pode alterar os dados da tabela clicando 2 vezes numa linha da tabela… Então ela pode “editar” um campo. Como faço para não deixar isso acontecer?

[color=red]2)[/color] Quando o cliente seleciona uma linha da tabela, os campos dela vão para uns jTextField… Só que tem um problema: A pessoa consegue selecionar 2 linhas da tabela ao mesmo tempo. Como faço para não deixar isso acontecer?

Agradeço desde já.

13 Respostas

NightDark

1. No seu TableModel acrescente isto:

public boolean isCellEditable(int row, int column) { return false; }

2. Use esté método:

jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

Se isto resolver não esqueça de adicionar ao Título - [RESOLVIDO] :wink:

pedroroxd

a 2) deu certo…
a 1) eu coloquei o método… e depois?

NightDark

depois você tenta fazer o obvio… testar se sua tabela está com as celulas editáveis ou não^^

pedroroxd

Tentei assim:

int x,y=0; for(x=0;x<=jTable1.getColumnCount();x++) { isCellEditable(x, y); } x=0; for (y=0;y<=jTable1.getRowCount();y++) { isCellEditable(x, y); }

NightDark

Você usa DefaultTableModel???

Se usa, Leia sobre implementar AbstractTableModel, tem vários exemplos aqui no Fórum…

Na sua classe, sobrescreva o método isCellEditable(int row, int column) com o que eu te passei.

Pronto, é isso^^

pedroroxd

Blz…
Mas como que eu chamo ele?

jTable1.isCellEditable(0, 0);

NightDark

Não precisa, quem se encarrega disso é o seu TableModel, basta implementar…

Basta você usar este TableModel numa tabela que ela não vai permitir edição.

pedroroxd

o meu defaut table model ta dentro do refreshtabela():

private void refreshtabela() throws ClassNotFoundException, SQLException{ final DefaultTableModel modelo = new DefaultTableModel(); . . . jTable1.setModel(modelo); }

E depois tenho o isCellEditable:

public boolean isCellEditable(int row, int column) { return false; }

pedroroxd

Como que eu implementaria nesse caso?

NightDark
pedroroxd

Eu não uso AbstractTableModel O_o

NightDark

Bom, você perde muito por usar DefaultTableModel...

mais tá ai, com DefaultTableModel vc pode usar assim:

DefaultTableModel modelo = new DefaultTableModel( new Object[][] {{"Linha 1", "Linha 2"}},  new Object[] {"Coluna 1", "Coluna 2"} ) {

	 public boolean isCellEditable (int row, int col){  
		 return false;  
	 }

};

jTable1.setModel(modelo);
pedroroxd

Obrigado…
Resolveu :wink:

Criado 26 de setembro de 2009
Ultima resposta 26 de set. de 2009
Respostas 13
Participantes 2