Table = new MyTable(); Não consigo usar meus metodos

Boa noite!
Criei ua Tabela que salva em um arquivo seu proprio Model, mas quando tento usar os metodos public não são reconhecidos pela IDE (NB6,5).

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pessoal.table;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import pessoal.constantes.Constantes;

/**
 *
 * @author Alirio Oliveira
 */
public class MyTable extends JTable implements Constantes{

    public void carregar(){
        try{
            File f = new File("c:\TablePagar.ser");
            if(!f.exists()){
                DefaultTableModel model = new DefaultTableModel();
                model.setColumnIdentifiers(COLUNAS);
                model.addRow(new String[]{"","","","","","",""});
                setModel(model);
                return;
            }
                
            FileInputStream fStream = new FileInputStream(f);
            ObjectInput stream = new ObjectInputStream(fStream);
            Object obj = stream.readObject();
            if(obj instanceof DefaultTableModel)
                setModel((DefaultTableModel) obj);
            stream.close();
            fStream.close();  
            
        }catch(Exception e){
            System.err.println("Serialization error #1: "+ e.toString());
        }        
    }
    public void salvar(){
        try{
            FileOutputStream fStream = new FileOutputStream("c:\TablePagar.ser");
            ObjectOutput stream = new ObjectOutputStream(fStream);
            stream.writeObject(getModel());
            stream.flush();
            stream.close();
        }catch(Exception e){
            System.err.println("Serialization error #2: "+ e.toString());
        }        
    }


}

uso o codigo acima assim:

JTable myTable = new MyJTable();

Não consigo usar os metodos :

myTable.salvar(); myTable.carregar();

Esses metodos não são reconhecidos pela IDE.
Alguem tem ideia o porque?

Grato!!!
nem

JTable myTable = new MyJTable();  

Você está criando uma variável de referência para o tipo JTable, portanto pode usar apenas os métodos deste tipo.
Experimente substituir a linha acima por:

MyJTable myTable = new MyJTable();  

Ou então fazer um Cast na hora de usar

JTable myTable = new MyJTable();
(MyJTable (myTable)).salvar();

Apesar que acho voce nao extender JTable e sim implementar TableModel ou extender a AbstractTableModel e trabalhar com carregar e salvar só com o modelo

Boa dica, nem havia pensado nisso.
Se bem que se for seguir o MVC bem certinho, acho que nem é papel do TableModel fazer isso. Ou é??
Mas tudo bem squall926, veja como fica melhor para você.

Não… quem salva e carrega tem que ser uma classe estilo DAO mesmo…
o TableModel tem que ser encarregado apenas de mostrar os dados e com alguma programação extra atualizalos com as modificações da JTable mas o DAO que os salva depois.

Apesar que ali… ele está salvando por ObjectOutputStream um objeto Serializavel.
Mas acho melhor pegar apenas a List do Model e salvar do mesmo modo já que ele quer fazer dessa forma.

Beleza, era bem o que eu imaginava. :slight_smile: