Jtable só aparece com uma coluna

7 respostas
renato_ramos

Oi

eu criei um modelo para uma tabela

class ModeloTabelaObjeto extends AbstractTableModel
{
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    private ObjetoFacade objetoFacade = (ObjetoFacade) context.getBean("objetoFacade");
    private ArrayList objetoLista = new ArrayList();
    private String[] colunas = {"1", "2" , "3" , "4" , "5", "6"};

    public ModeloTabelaObjeto()
    {
        objetoLista.addAll(objetoFacade.obterTodos());
        fireTableDataChanged();
    }
    public void obterPorNome(String strNome)
    {
        objetoLista.clear();
        objetoLista.addAll(objetoFacade.obterPorNome(strNome));
        fireTableDataChanged();

    }

    public void obterPorLogradouro(String idLogradouro)
    {
        objetoLista.clear();
        objetoLista.addAll(objetoFacade.obterPorLogradouro(idLogradouro));
        fireTableDataChanged();
    }

    public void obterTodos()
    {
        objetoLista.clear();
        objetoLista.addAll(objetoFacade.obterTodos());
        fireTableDataChanged();
    }

    public void obterPorRfid(String Rfid)
    {
        objetoLista.clear();
        objetoLista.addAll(objetoFacade.obterPorRfid(Rfid));
        fireTableDataChanged();
    }

    public void obterPorLatLong(String Latitude, String Longitude)
    {
        objetoLista.clear();
        objetoLista.addAll(objetoFacade.obterPorLatitudeLongitude(Latitude, Longitude));
        fireTableDataChanged();
    }
    
    public void addQuestao(Objeto questao)
    {
        objetoLista.add(questao);
        fireTableDataChanged();
    }

    public void addListaQuestao(List list)
    {
        objetoLista.addAll(list);
        fireTableDataChanged();
    }

    public void LimparDados()
    {
        objetoLista = new ArrayList();
        fireTableDataChanged();
    }

    public int getRowCount() {
        return objetoLista.size();
    }

    public int getColumnCount() {
        return colunas.length;
    }

    public Objeto getQuestao(int linha)
    {
        return (Objeto) objetoLista.get(linha);
    }

mas só vem dados na primeira coluna… as outras colunas ficam em branco…

alguem sabe me dizer pq?

7 Respostas

ViniGodoy

Cadê o método getValueAt()?

renato_ramos

tah pra baixo…

ele é necessario pra fazer isso?

não entendi mt bem ele… aí nen implementei ^^ pq qndo eu pego o valor eu pego a linha inteira…

valeu

ViniGodoy

Sim. Ele é chamado pelo JTable. Ela usa esse método para perguntar: “Que valor eu devo colocar na coluna x e na linha y?”

Quanto a pegar o valor pela linha inteira, o jeito que você fez está certo. O getValueAt deveria ser só usado pela JTable, e mais ninguém. Suas classes podem trabalhar com o seu método get, que retorna um objeto. Muito mais prático.

renato_ramos

legal

entao posso pedir um exemplo??

vo postar meu model aqui

class ModeloTabelaObjeto extends AbstractTableModel
{
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    private ObjetoFacade objetoFacade = (ObjetoFacade) context.getBean("objetoFacade");
    private ArrayList objetoLista = new ArrayList();
    private String[] colunas = {"1", "2" , "3" , "4" , "5", "6"};

    public ModeloTabelaObjeto()
    {
        objetoLista.addAll(objetoFacade.obterTodos());
        fireTableDataChanged();
    }
    public void obterPorNome(String strNome)
    {
        objetoLista.clear();
        objetoLista.addAll(objetoFacade.obterPorNome(strNome));
        fireTableDataChanged();

    }

    public void obterPorLogradouro(String idLogradouro)
    {
        objetoLista.clear();
        objetoLista.addAll(objetoFacade.obterPorLogradouro(idLogradouro));
        fireTableDataChanged();
    }

    public void obterTodos()
    {
        objetoLista.clear();
        objetoLista.addAll(objetoFacade.obterTodos());
        fireTableDataChanged();
    }

    public void obterPorRfid(String Rfid)
    {
        objetoLista.clear();
        objetoLista.addAll(objetoFacade.obterPorRfid(Rfid));
        fireTableDataChanged();
    }

    public void obterPorLatLong(String Latitude, String Longitude)
    {
        objetoLista.clear();
        objetoLista.addAll(objetoFacade.obterPorLatitudeLongitude(Latitude, Longitude));
        fireTableDataChanged();
    }
    
    public void addQuestao(Objeto questao)
    {
        objetoLista.add(questao);
        fireTableDataChanged();
    }

    public void addListaQuestao(List list)
    {
        objetoLista.addAll(list);
        fireTableDataChanged();
    }

    public void LimparDados()
    {
        objetoLista = new ArrayList();
        fireTableDataChanged();
    }

    public int getRowCount() {
        return objetoLista.size();
    }

    public int getColumnCount() {
        return colunas.length;
    }

    public Objeto getObjeto(int linha)
    {
        return (Objeto) objetoLista.get(linha);
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        Objeto q = (Objeto) objetoLista.get(rowIndex);

        switch(columnIndex)
        {
            case 0:
                return q.getDescObjeto();
            default:
                return null;
        }
    }
}

como só tem o case 0 só esta vindo as descrição… se entendi bem… neh?

tenho mais uma pergunta…

a tabela não com o nome da coluna… vem A B C etc. … sabe me dizer pq??

mt obrigado!!

[]'s

ViniGodoy

Isso… Se vc quiser mais campos, tem que colocar mais coisas nesse case.

Para alterar o nome da coluna, sobrescreva o método getColumnName:

public String getColumnName(int column) { return colunas[column]; }

Se quiser ver um exemplo de um model completo, para livros:
http://www.guj.com.br/posts/list/132698.java#714736

renato_ramos

Opa valeu vini ^^’

sobrescrever… é anotar com @override o metodo na classe??

vou dah uma olhada sim… c não conseguir esse final de semana… segundao eu dou uma olhada ^^"

mt obrigado pela atenção

tenho aprendido bastante neste forum =D

renato_ramos

valeu Vini pela atenção ^^’

funcionou!

[]'s

Criado 6 de novembro de 2009
Ultima resposta 9 de nov. de 2009
Respostas 7
Participantes 2