Ajuda Rapida em Modelo de Tabela

Boa tarde pessoal,

Estou precisando de uma ajuda maio que rapida

tenho esta Table Model

package model.tablemodel;

import java.text.DateFormat;
import java.util.Date;

import javax.swing.table.AbstractTableModel;

public class DemostrativoTableModel extends AbstractTableModel {

	private Object [][]dados;
	
	public DemostrativoTableModel(Object [][]dados){
		if(dados == null)
			this.dados = new Double[5][11];
		else
			 this.dados = dados;
	}

    public int getColumnCount() {  
        return 11;
    }

    public String getColumnName(int coluna) {    
       switch(coluna){  
         case  0:return  "Taxa de Juros";  
         case  1:return  "Vencto.";  
         case  2:return  "Garantia";  
         case  3:return  "Valor Contratado";  
         case  4:return  "Saldo Atual"; 
         case  5:return  "Valores Vencidos"; 
         case  6:return  "A vencer Curto Prazo"; 
         case  7:return  "A vencer Longo Prazo"; 
         case  8:return  "PMT"; 
         case  9:return  "Destinação"; 
         case  10:return "Observações"; 
         default:return "";  
       }  
    } 

    public int getRowCount() {
		return 5;
	}

    public Class<?> getColumnClass(int col) {
    	switch(col){
	    	case  0:return Double.class;    
	    	case  1:return Date.class;  
	    	case  2:return String.class;  
	    	case  3:return Double.class;  
	    	case  4:return Double.class;
	    	case  5:return Double.class;
	    	case  6:return Double.class; 
	    	case  7:return Double.class; 
	    	case  8:return String.class;
	    	case  9:return String.class;
	    	case 10:return String.class;
	    	default:return Object.class;  
		}  
	}

	public Object getValueAt(int row, int col) {
			switch(col){
				case 0:return  dados[row][col];
				case 1:return  dados[row][col];
				case 2:return  dados[row][col];
				case 3:return  dados[row][col];
				case 4:return  dados[row][col];
				case 5:return  dados[row][col];
				case 6:return  dados[row][col];
				case 7:return  dados[row][col];
				case 8:return  dados[row][col];
				case 9:return  dados[row][col];
				case 10:return dados[row][col];
		    	default:return null;
			}
	}
	
    public boolean isCellEditable(int row, int col) {
    	return true;
    }
    
    public void setValueAt(Object value, int row, int column) {
    	if(Double.class.isInstance(value)){
    		System.out.println("Entrou "+value+"TipoClasse"+ value.getClass());
    		dados[row][column] = value;
    	}
    	if(String.class.isInstance(value)){
    		System.out.println("Entrou "+value+"TipoClasse"+ value.getClass());
    		dados[row][column] = value.toString();
    	}
    	if(Date.class.isInstance(value)){
    		DateFormat teste = DateFormat.getDateInstance(DateFormat.MEDIUM);
    		System.out.println("Entrou "+value+"TipoClasse"+ value.getClass()+"formato"+teste.format(value));
    		dados[row][column] = teste.format(value);
    	}
    	
    	fireTableCellUpdated(row,column);
    }	

    
    
} 

O meu problema é o seguinte:

Eu crio a tabela bonitinha, então eu consigo alterar as colunas que são double, porem as colunas e são DATE e STRING não deu certo, este é o erro que acontece:

elas apontam para esta linha

dados[row][column] = teste.format(value);

Alguem poderia me ajudar ?

Você está colocando um dado do tipo String num array que não é de Strings.

Então é que este metodo

teste.format(value);

retorna um String, onde seria um campo para DATE… só que eu n sei como eu posso arrumar isto, primeira vez que eu estou trabalhando com Datas em um modelo então eu to apanhando muito :s

[quote=Alchemist][code]
public String getColumnName(int coluna) {
switch(coluna){
case 0:return “Taxa de Juros”;
case 1:return “Vencto.”;
case 2:return “Garantia”;
case 3:return “Valor Contratado”;
case 4:return “Saldo Atual”;
case 5:return “Valores Vencidos”;
case 6:return “A vencer Curto Prazo”;
case 7:return “A vencer Longo Prazo”;
case 8:return “PMT”;
case 9:return “Destinação”;
case 10:return “Observações”;
default:return “”;
}
}

public Class<?> getColumnClass(int col) {
	switch(col){
    	case  0:return Double.class;    
    	case  1:return Date.class;  
    	case  2:return String.class;  
    	case  3:return Double.class;  
    	case  4:return Double.class;
    	case  5:return Double.class;
    	case  6:return Double.class; 
    	case  7:return Double.class; 
    	case  8:return String.class;
    	case  9:return String.class;
    	case 10:return String.class;
    	default:return Object.class;  
	}  
}

public Object getValueAt(int row, int col) {
		switch(col){
			case 0:return  dados[row][col];
			case 1:return  dados[row][col];
			case 2:return  dados[row][col];
			case 3:return  dados[row][col];
			case 4:return  dados[row][col];
			case 5:return  dados[row][col];
			case 6:return  dados[row][col];
			case 7:return  dados[row][col];
			case 8:return  dados[row][col];
			case 9:return  dados[row][col];
			case 10:return dados[row][col];
	    	default:return null;
		}
}

}
[/code]
[/quote]
Perdoando o primeiro.
Você escreve para o pessoal do xkcd? Master Piece!!!

¬¬ cara não entendi a piadinha… se n quer ajudar então não atrapalhe…

Estou tentando resolver mais esta dificil, eu não entendo pq os Double dão certo e os campos String e Date não dão :S

Oh, mas estou ajudando. Trust me. :smiley:

Puts alguem pelo amor de deus me ajuda aqui, consegui arrumar meu modelo bonitinho, ele ficou assim:

package model.tablemodel;

import java.util.Date;

import javax.swing.table.AbstractTableModel;

public class DemostrativoTableModel extends AbstractTableModel {

	private Object [][]dados;
	
	public DemostrativoTableModel(Object [][]dados){
		if(dados == null)
			this.dados = new Object[5][11];
		else
			 this.dados = dados;
	}

    public int getColumnCount() {  
        return 11;
    }

    public String getColumnName(int coluna) {    
       switch(coluna){  
         case  0:return  "Taxa de Juros";  
         case  1:return  "Vencto.";  
         case  2:return  "Garantia";  
         case  3:return  "Valor Contratado";  
         case  4:return  "Saldo Atual"; 
         case  5:return  "Valores Vencidos"; 
         case  6:return  "A vencer Curto Prazo"; 
         case  7:return  "A vencer Longo Prazo"; 
         case  8:return  "PMT"; 
         case  9:return  "Destinação"; 
         case  10:return "Observações"; 
         default:return "";  
       }  
    } 

    public int getRowCount() {
		return 5;
	}

    public Class getColumnClass(int col) {
    	switch(col){
	    	case  0:return Double.class;    
	    	case  1:return Date.class; 
	    	case  2:return String.class;  
	    	case  3:return Double.class;  
	    	case  4:return Double.class;
	    	case  5:return Double.class;
	    	case  6:return Double.class; 
	    	case  7:return Double.class; 
	    	case  8:return String.class;
	    	case  9:return String.class;
	    	case 10:return String.class;
	    	default:return Object.class;  
		}
	}

	public Object getValueAt(int row, int col) {
		return dados[row][col];
	}
	
    public boolean isCellEditable(int row, int col) {
    	return true;
    }
    
    public void setValueAt(Object value, int row, int column) {
    	if(Double.class.isInstance(value))
    		dados[row][column] = value;
    	
    	if(String.class.isInstance(value))
    		dados[row][column] = value.toString();

    	if(Date.class.isInstance(value)){
    		dados[row][column] = value;
    	}
    	
    	fireTableCellUpdated(row,column);
    }	
} 

Blz ai eu preciso de uma mascara na Celula, então e estou tentando usar isto :

		//Maskaras
		JFormattedTextField campoData = null;
		MaskFormatter maskData= null;
		try {
			maskData = new MaskFormatter("##/##/####");
			maskData.setPlaceholderCharacter('_');

			campoData = new JFormattedTextField(maskData);  
			campoData.setBorder(BorderFactory.createLineBorder(Color.BLACK));
			 
		} catch (ParseException e) {
			e.printStackTrace();
		}


		//seto a maskara
        TableColumn col = tabela.getColumnModel().getColumn(1);  
	    col.setCellEditor(new DefaultCellEditor(campoData));  

Mais na hora de alterar os dados da tabela acontece este erro:

Como eu posso conveter o objeto para data ?

Será que niguem, pode ajudar mesmo ?

Já tentou debugar para ver qual é o tipo do objeto, e qual o conteúdo dele? Já leu a documentação da API para saber o que ela espera?

Se o objeto que voce quer formatar pe um Calendar voce precisa formatar o getTime do objeto.