Limpar jtable com cellrender

9 respostas
M

olá pessoal
tenho uma jtable
para limpar os dados dela utilizo

mas agora precisei criar um cellrender e celleditor nesta tabela
para formatar o valor que o usuario vai informar nas celulas da tabela
mas dae a limpeza dos dados da tabela não esta funcionando mais
se eu tenho os seguintes dados

1 | teste1
2 | teste2

quando mando limpar
na tabela inteira aparece a ultima linha digitada

2 | teste2

se eu tiro o cellrender e o celleditor funciona a limpeza
mas preciso controlar o que o usuario digita nas celulas

9 Respostas

Marky.Vasconcelos

Cade onde voce implementa esse model?

M
jTableMidia.getColumnModel().getColumn(0).setCellRenderer(new CellRender_Texto());
	jTableMidia.getColumnModel().getColumn(1).setCellRenderer(new CellRender_Numero());

	jTableMidia.getColumnModel().getColumn(0).setCellEditor(new CellEditor_Texto(50));
	jTableMidia.getColumnModel().getColumn(1).setCellEditor(new CellEditor_Numero(6));
E

Tente:

seuModelo.fireTableRowsInserted(firstRow,lastRow); // quando inserir
seuModelo.fireTableRowsUpdated(firstRow,lastRow); // quando alterar
seuModelo.fireTableRowsDeleted(firstRow,lastRow); // quando excluir (seu caso)

para que o modelo possa chamar corretamente o redesenho da tabela (CellRenderer).

M

não deu certo …

parece ser uma “sujeira”, o conteudo que foi digitado no jtextfield que eu crie no celleditor e no cellrender, que não limpa …

Marky.Vasconcelos

To falando o TableModel, voce me mostrou como coloca os Renderers nele.

Para fazer isso através do model é facil, crie um método “clear” que limpa os dados dele.

M

unico jeito que eu conheço de limpar o table model é o listando acima, no 1º topico

Marky.Vasconcelos

Cade onde voce instancia o model e coloca na JTable?

M
linhasMidia = new Vector();
	colunasMidia = new Vector();

	colunasMidia.add("Título ");
	colunasMidia.add("Tempo");

	TableModelMidia = new DefaultTableModel(linhasMidia, colunasMidia);
	jTableMidia = new JTable(TableModelMidia);
	.................
M

o problema ta no celleditor
nele eu crio um jtextfield
mas ele ta usando o mesmo jtextfield para todas as celulas da tabela
e nao to conseguindo criar um jtextfield para cada celula
segue meu celleditor

package geral.classe;

import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import javax.swing.AbstractCellEditor;
import javax.swing.JTextField;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;

public class CellEditor_Numero extends AbstractCellEditor implements TableCellEditor {
	
	private JTextField cell = null;

	int max = 0 ;
	
	public CellEditor_Numero(int maximo) {
		max = maximo ;
	}
	
	private JTextField getCell() {
		if (cell == null) {
			cell = new JTextField("");
			cell.setText("0");
		   // cell.setDocument( Validacao.getDocumento(Validacao.TipoTexto.NONE, max, 1) );
		    cell.setBackground( new Color(0,255,255) );
		    cell.setFont(new Font("Dialog", Font.PLAIN, 11));
		    cell.requestFocus();
		}
		return cell;
	}

	public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
		if ((value != null) && (isSelected == true )) getCell().setText( value.toString() );
		return getCell();
	}

	public Object getCellEditorValue() {
		return getCell().getText();
	}

}
Criado 24 de setembro de 2010
Ultima resposta 24 de set. de 2010
Respostas 9
Participantes 3