Pessoal duvida jtable

63 respostas
A

Gostaria de saber como eu insiro dados em uma jtable.

Eu uso uma table model para controlar jtable
DAO responsavel pela conexão com o banco

como eu consigo fazer os dois metodos se comunicarem de forma que os dados do banco são mostrados da jtable

Bom abaixo segui o que eu fiz mas nao deu certo

List<Produto> lista = daoProduto.buscarTodos();
                ProdutoTableModel model = new ProdutoTableModel(lista);//aqui fica grifado a lista ou seja está dando erro.
                tblBanco.setModel(model);

Meu codigo da Table Model: Produto

public class Produto {

    private String despesa;
    private String estabelecimento;
    private String datadespesa;
    private String valordespesa;
    private String formapagamento;
    private String datacheque;
    private String numerocheque;

    public Produto() {
    }

    public Produto(String despesa,String estabelecimento,String datadespesa,String valordespesa,String formapagamento,String datacheque,String numerocheque) {
        this.despesa = despesa;
        this.estabelecimento = estabelecimento;
        this.datadespesa = datadespesa;
        this.valordespesa = valordespesa;
        this.formapagamento = formapagamento;
        this.datacheque = datacheque;
        this.numerocheque = numerocheque;
    }

    //Gets

    public String getDespesa() {
        return despesa;

}
     public String getEstabelecimento() {
        return estabelecimento;

}
      public String getDataDespesa() {
        return datadespesa;

}
       public String getValorDespesa() {
        return valordespesa;

}
        public String getFormaPagamento() {
        return formapagamento;

}
         public String getDataCheque() {
        return datacheque;

}
          public String getNumeroCheque() {
        return numerocheque;

}
      //Sets

      public void setDespesa(String despesa) {
        this.despesa = despesa;
    }
       public void setEstabelecimento(String estabelecimento) {
        this.estabelecimento = estabelecimento;
    }
        public void setDataDespesa(String datadespesa) {
        this.datadespesa = datadespesa;
    }
         public void setValorDespesa(String valordespesa) {
        this.valordespesa = valordespesa;
    }
          public void setFormaPagamento(String formapagamento) {
        this.formapagamento = formapagamento;
    }
           public void setDataCheque(String datacheque) {
        this.datacheque = datacheque;
    }
            public void setNumeroCheque(String numerocheque) {
        this.numerocheque = numerocheque;
    }

}

Codigo Table Model:ProdutoTableModel

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.swing.table.AbstractTableModel;

public class ProdutoTableModel extends AbstractTableModel {

    //constantes que vão representar as colunas
    //(só para facilitar o entendimento do código)
    private final int COL_Despesa = 0;
    private final int COL_Estabelecimento = 1;
    private final int COL_DataDespesa = 2;
    private final int COL_ValorDespesa = 3;
    private final int COL_FormaPagamento = 4;
    private final int COL_DataCheque = 5;
    private final int COL_NumeroCheque = 6;

    //lista dos produtos que serão exibidos
    private List<Produto> produtos;

    public ProdutoTableModel() {
        produtos = new ArrayList();
    }

    public ProdutoTableModel(List<Produto> lista) {
        this();
        produtos.addAll(lista);
    }

    public int getRowCount() {
        //cada produto na lista será uma linha
        return produtos.size();
    }

    public int getColumnCount() {
        //vamos exibir só Nome e Quantidade, então são 2 colunas
        return 2;
    }

    @Override
    public String getColumnName(int column) {
        //qual o nome da coluna
        if (column == COL_Despesa) {
            return "Despesa";
        } else if (column == COL_Estabelecimento) {
            return "Estabelecimento";
        }
          else if (column == COL_DataDespesa) {
            return "Data da Despesa";
        }
          else if (column == COL_ValorDespesa) {
            return "Valor da Despesa";
        }
          else if (column == COL_FormaPagamento) {
            return "Forma de Pagamento";
        }
          else if (column == COL_DataCheque) {
            return "Data do Cheque";
        }
          else if (column == COL_NumeroCheque) {
            return "Numero do Cheque";
        }
        return "";
    }

    @Override
    public Class getColumnClass(int columnIndex) {
        //retorna a classe que representa a coluna
        if (columnIndex == COL_Despesa) {
            return String.class;
        } else if (columnIndex == COL_Estabelecimento) {
            return String.class;
        }
          else if (columnIndex == COL_DataDespesa) {
            return String.class;
        }
          else if (columnIndex == COL_ValorDespesa) {
            return String.class;
        }
          else if (columnIndex == COL_FormaPagamento) {
            return String.class;
        }
          else if (columnIndex == COL_DataCheque) {
            return String.class;
        }
          else if (columnIndex == COL_NumeroCheque) {
            return String.class;
        }
        return String.class;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        //pega o produto da linha
        Produto p = produtos.get(rowIndex);

        //verifica qual valor deve ser retornado
        if (columnIndex == COL_Despesa) {
            return p.getDespesa();
        } else if (columnIndex == COL_Estabelecimento) {
            return p.getEstabelecimento();
        }
          else if (columnIndex == COL_DataDespesa) {
            return p.getDataDespesa();
        }
          else if (columnIndex == COL_ValorDespesa) {
            return p.getValorDespesa();
        }
          else if (columnIndex == COL_FormaPagamento) {
            return p.getFormaPagamento();
        }
          else if (columnIndex == COL_DataCheque) {
            return p.getDataCheque();
        }
          else if (columnIndex == COL_NumeroCheque) {
            return p.getNumeroCheque();
        }
        return "";
    }
        @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        //no nosso caso todas vão ser editáveis, entao retorna true pra todas
        return true;
    }

   @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        //pega o produto da linha
        Produto p = produtos.get(rowIndex);

        //verifica qual valor vai ser alterado
        if (columnIndex == COL_Despesa) {
            p.setDespesa(aValue.toString());
        } else if (columnIndex == COL_Estabelecimento) {
            p.setEstabelecimento(aValue.toString());
        }
          else if (columnIndex == COL_DataDespesa) {
            p.setDataDespesa(aValue.toString());
        }
          else if (columnIndex == COL_ValorDespesa) {
            p.setValorDespesa(aValue.toString());
        }
          else if (columnIndex == COL_FormaPagamento) {
            p.setFormaPagamento(aValue.toString());
        }
          else if (columnIndex == COL_DataCheque) {
            p.setDataCheque(aValue.toString());
        }
          else if (columnIndex == COL_NumeroCheque) {
            p.setNumeroCheque(aValue.toString());
        }
        //avisa que os dados mudaram
        fireTableDataChanged();
    }

    //-----------------------------------------------------
    //Métodos personalizados
    //-----------------------------------------------------
    public void inserir(Produto p) {
        produtos.add(p);

        fireTableDataChanged();
    }

    public void excluir(String pos) {
        produtos.remove(pos);

        fireTableDataChanged();
    }

    public void excluir(Produto p) {
        produtos.remove(p);

        fireTableDataChanged();
    }

    public void ordenarPorValor() {
        //ordena pelo nome
        Collections.sort(produtos, new Comparator<Produto>() {

            public int compare(Produto o1, Produto o2) {
                return o1.getValorDespesa().compareTo(o2.getValorDespesa());
            }
        });
        //avisa que a tabela foi alterada
        fireTableDataChanged();
    }
    

    public void misturar() {
        //mistura a lista
        Collections.shuffle(produtos);

        //avisa que a tabela foi alterada
        fireTableDataChanged();
    }

    public Produto getCliente(int pos) {
        if (pos >= produtos.size()) {
            return null;
        }

        return produtos.get(pos);
    }
}

Gostaria de saber aonde esta este erro, e se estou no caminho certo com Table Model, e como faço para inserir meu banco de dados no jtable atraves do tablemodel.

63 Respostas

F

No lugar de:

public ProdutoTableModel(List<Produto> lista) {  
        this();  
        produtos.addAll(lista);  
    }

Tente assim:

public ProdutoTableModel(List<Produto> lista) {  
        produtos = new ArrayList<Produto>(lista);  
    }

Boa sorte.

A

Contiunuo a mesma coisa esta dando erro

Erro:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - cannot find symbol
Conectado!
  symbol:   constructor ProdutoTableModel(java.util.List<model.Produto>)
  location: class ProdutoTableModel
        at Tela_Principal.PreencherTabela(Tela_Principal.java:601)
        at Tela_Principal.btTabelaActionPerformed(Tela_Principal.java:463)
        at Tela_Principal.access$500(Tela_Principal.java:8)
        at Tela_Principal$6.actionPerformed(Tela_Principal.java:123)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6267)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6032)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
V

Poste o código do método PreencherTablena do arquivo Tela_Principal.java, não esqueça de destacar qual é a linha 601.

Certifique-se também que no seu projeto não existam 2 classes chamadas produto. Uma no pacote model e outra em outro pacote qualquer.

A
List<Produto> lista = daoProduto.buscarTodos();  
               ProdutoTableModel model = new ProdutoTableModel(lista);//aqui fica grifado a lista ou seja está dando erro.  está e a linha 601
               tblBanco.setModel(model);

Obrigado este é o codido do metodo preenchertabela()

o restante esta logo acima

Vini gostaria de saber se esta legal meu tablemodel se tem que mudar alguma coisa, e como eu faço para exibir, excluir e atualizar meu banco na tabela atraves do tablemodel, por que adaptei meu codigo ontem eu usava o default entao estoou me adaptando.

Lembrando que mudei por causa das suas cobrança rsrsrs!!!mas está valendo a pena pelo menos no DAO que já me acostumei, agora só falta o tablemodel, mas devagar e com calma tiro de letra, mas me ajudem please.

F

veja isso: http://www.guj.com.br/java/260577-abstracttablemodel-removendo-registro-do-bd-

t+ e boa sorte.

V

Me diz uma coisa… por acaso você verificou se não existem 2 classes de Produto no seu projeto?

Aparentemente está tudo certo, seu model está ok. Mas ele está reclamando que não pode converter um List<Produto> num List<model.Produto>, o que me leva a crer que existam 2 classes diferentes para a mesma coisa.

A

Fernando não consegui entender por que tenho uma classe DAO e uma TableModel minha classe DAo está ok por que até ontem eu usava DefaultTableModel, mas como estou seguindo os conselhos do Vini e de outros membros, mudei para TableModel mas o problema
é tudo novo para mim então eu gostaria de saber como eu faço primeiramente para exibir meu banco na tabela

Os codigos e erro etsão logo acima, eu acredito que o erro esteja na TableModel por que a variavel que recebe o banco no caso lista esta grifado, mas quando eu coloco a tabela para receber, por que até ontem eu usando o DefaultTableModel estava tudo ok, por isto desconfio da table model, mas como sou iniciante tenho um pouco de dificuldade

os codigos esão logo acima.

Obrigado!!!

A

Entao as classes que tenho é:

Tela Principal
Produto.java
DaoProduto
ProdutoTabela : eu tive que mudar está por que estava duplicada
ProdutoTableModel

O problema esta nesta linha

public void PreencherTabela(){

                List<Produto> lista = daoProduto.buscarTodos();// esta ok
                ProdutoTableModel model = new ProdutoTableModel(lista); // esta dando o erro aqui na variavel  lista a que recebe o banco
                tblBanco.setModel(model);//esta ok

            }
    }
V

Já tentou dar um rebuild no seu projeto? É muito estranho pq pelo seu código o construtor está lá, mas por algum motivo, ele não consegue compilar o código fonte.

V

Uma dúvida. SE você vai exibir apenas 2 colunas, porque seus métodos getValueAt, getColumnClass e setValueAt tem tantas colunas diferentes?

A

Vai ser mais de duas colunas vai ser o banco todo

ao total sao 7

Entao por que será que está dando o erro na variavel lista????
public void PreencherTabela(){

                List<Produto> lista = daoProduto.buscarTodos();
                ProdutoTableModel model = new ProdutoTableModel(lista);
                tblBanco.setModel(model);

            }
    }
V

Quanto a inserir no banco de dados. Crie um método getProdutos() no seu JTable que retorne a lista de produtos:

public List&lt;Produto&gt; getProdutos() { return Collections.unmodifiableList(lista); }

Fora do JTable, basta agora chamar o ProdutoDao para salvar os produtos:

V

alucardmaas:
Vai ser mais de duas colunas vai ser o banco todo

ao total sao 7

Então precisa corrigir o método getColumnCount(). :slight_smile:

A

Sera que o erro esta ai e como faço isto vini???

V

Com certeza não. Você usa o Netbeans?

Se usa, tente apagar o arquivo de cache dele:
.netbeans\7.0\var\cache\index

A

Ja vi coloquei return 7 mas mesmo a variavel continua grifada

Sim uso o netbeans

apaga a psta index

A

apaga a psta index???
Senao nao for qual o nome do arquivo

V

Renomeia ela para qualquer outra coisa. Aí vc pode voltar atrás se der m…

A

ja mudei e abri o Netbeans, está tudo ok, mas a variavel continua a mesma coisa grifada (erro)

V

Tente então reiniciar o netbeans e recompilar seu projeto.

A

Não tinha como fazer com ele aberto por que o windows nao deixava

A

Você quer da uma olhada no codigo DAO, para ver se o problema é lá lembrando que até ontem ele estava ok com DefaultTableModel, não sei se tem diferença, mas se quizer dar uma olhada

A

Fui Recompilar não foi

V

Ok. E voltou a dar o erro mesmo depois de você ter apagado a pasta?

Outra alternativa é procurar por todos os .class que o Netbeans tenha gerado e apaga-los.
Está muito estranho, isso deveria estar compilando perfeitamente.

A

Dei uma olhada ele cria dinovo a pasta rs

V

Estranho, aparentemente é um problema do Netbeans, não do seu código.

A

Apaguei e nao foi, é estranho por que na aceita a varivael lista não tem problema nenhum com TableModel?

V

Não tem problema nenhum.

O erro está muito estranho. Ele está dizendo que um construtor contendo no formato:
ProdutoTableModel(List&lt;Produto&gt;)[code] 
não existe.

Tente forçar a assinatura do seu construtor para:
[code]public ProdutoTableModel(java.util.List&lt;model.Produto&gt; lista)

Só para ver se pelo menos assim ele compila.

A

Este é o codigo da classe DAO Buscar Todos

public Vector<Produto> buscarTodos() {
      conectar();
      Vector<Produto> resultados = new Vector<Produto>();
      ResultSet rs;
      try {
         rs = comando.executeQuery("SELECT * FROM produto");
         while (rs.next()) {
            Produto temp = new Produto();
            // pega todos os atributos da despesa
            temp.setDespesa(rs.getString("despesa"));
            temp.setEstabelecimento(rs.getString("estabelecimento"));
            temp.setDatadaDespesa(rs.getString("datadadespesa"));
            temp.setValordaDespesa(rs.getString("valordadespesa"));
            temp.setFormadePagamento(rs.getString("formadepagamento"));
            temp.setDataCheque(rs.getString("datacheque"));
            temp.setNumeroCheque(rs.getString("numerocheque"));
            temp.setMes(rs.getString("mes"));
            resultados.add(temp);
         }
         return resultados;
      } catch (SQLException e) {
         imprimeErro("Erro ao buscar Despesa", e.getMessage());
         return null;
      }
   }
A

Mas Aonde eu coloco isto Vini em qual classe

V
Seu DAO está certo, eu só usaria no lugar do Vector um ArrayList.
public List&lt;Produto&gt; buscarTodos() {
      conectar();
      List&lt;Produto&gt; resultados = new ArrayList&lt;Produto&gt;();
      ResultSet rs;
      try {
         rs = comando.executeQuery("SELECT * FROM produto");
         while (rs.next()) {
            Produto temp = new Produto();
            // pega todos os atributos da despesa
            temp.setDespesa(rs.getString("despesa"));
            temp.setEstabelecimento(rs.getString("estabelecimento"));
            temp.setDatadaDespesa(rs.getString("datadadespesa"));
            temp.setValordaDespesa(rs.getString("valordadespesa"));
            temp.setFormadePagamento(rs.getString("formadepagamento"));
            temp.setDataCheque(rs.getString("datacheque"));
            temp.setNumeroCheque(rs.getString("numerocheque"));
            temp.setMes(rs.getString("mes"));
            resultados.add(temp);
         }
         return resultados;
      } catch (SQLException e) {
         imprimeErro("Erro ao buscar Despesa", e.getMessage());
         return null;
      }
   }

Embora isso não devesse impedir seu código de funcionar (já que o Vector também é filho de List).

V

Na ProdutoTableModel.

V
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.swing.table.AbstractTableModel;

public class ProdutoTableModel extends AbstractTableModel {

    //constantes que vão representar as colunas
    //(só para facilitar o entendimento do código)
    private final int COL_Despesa = 0;
    private final int COL_Estabelecimento = 1;
    private final int COL_DataDespesa = 2;
    private final int COL_ValorDespesa = 3;
    private final int COL_FormaPagamento = 4;
    private final int COL_DataCheque = 5;
    private final int COL_NumeroCheque = 6;

    //lista dos produtos que serão exibidos
    private List&lt;Produto&gt; produtos;

    public ProdutoTableModel() {
        produtos = new ArrayList&lt;Produto&gt;();
    }

    public ProdutoTableModel(java.util.List&lt;model.Produto&gt; lista) {
        this();
        produtos.addAll(lista);
    }

    public int getRowCount() {
        //cada produto na lista será uma linha
        return produtos.size();
    }

    public int getColumnCount() {
        //vamos exibir só Nome e Quantidade, então são 2 colunas
        return 7;
    }

    @Override
    public String getColumnName(int column) {
        //qual o nome da coluna
        if (column == COL_Despesa) {
            return "Despesa";
        } else if (column == COL_Estabelecimento) {
            return "Estabelecimento";
        }
          else if (column == COL_DataDespesa) {
            return "Data da Despesa";
        }
          else if (column == COL_ValorDespesa) {
            return "Valor da Despesa";
        }
          else if (column == COL_FormaPagamento) {
            return "Forma de Pagamento";
        }
          else if (column == COL_DataCheque) {
            return "Data do Cheque";
        }
          else if (column == COL_NumeroCheque) {
            return "Numero do Cheque";
        }
        return "";
    }

    @Override
    public Class getColumnClass(int columnIndex) {
        //retorna a classe que representa a coluna
        if (columnIndex == COL_Despesa) {
            return String.class;
        } else if (columnIndex == COL_Estabelecimento) {
            return String.class;
        }
          else if (columnIndex == COL_DataDespesa) {
            return String.class;
        }
          else if (columnIndex == COL_ValorDespesa) {
            return String.class;
        }
          else if (columnIndex == COL_FormaPagamento) {
            return String.class;
        }
          else if (columnIndex == COL_DataCheque) {
            return String.class;
        }
          else if (columnIndex == COL_NumeroCheque) {
            return String.class;
        }
        return String.class;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        //pega o produto da linha
        Produto p = produtos.get(rowIndex);

        //verifica qual valor deve ser retornado
        if (columnIndex == COL_Despesa) {
            return p.getDespesa();
        } else if (columnIndex == COL_Estabelecimento) {
            return p.getEstabelecimento();
        }
          else if (columnIndex == COL_DataDespesa) {
            return p.getDataDespesa();
        }
          else if (columnIndex == COL_ValorDespesa) {
            return p.getValorDespesa();
        }
          else if (columnIndex == COL_FormaPagamento) {
            return p.getFormaPagamento();
        }
          else if (columnIndex == COL_DataCheque) {
            return p.getDataCheque();
        }
          else if (columnIndex == COL_NumeroCheque) {
            return p.getNumeroCheque();
        }
        return "";
    }
        @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        //no nosso caso todas vão ser editáveis, entao retorna true pra todas
        return true;
    }

   @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        //pega o produto da linha
        Produto p = produtos.get(rowIndex);

        //verifica qual valor vai ser alterado
        if (columnIndex == COL_Despesa) {
            p.setDespesa(aValue.toString());
        } else if (columnIndex == COL_Estabelecimento) {
            p.setEstabelecimento(aValue.toString());
        }
          else if (columnIndex == COL_DataDespesa) {
            p.setDataDespesa(aValue.toString());
        }
          else if (columnIndex == COL_ValorDespesa) {
            p.setValorDespesa(aValue.toString());
        }
          else if (columnIndex == COL_FormaPagamento) {
            p.setFormaPagamento(aValue.toString());
        }
          else if (columnIndex == COL_DataCheque) {
            p.setDataCheque(aValue.toString());
        }
          else if (columnIndex == COL_NumeroCheque) {
            p.setNumeroCheque(aValue.toString());
        }
        //avisa que os dados mudaram
        fireTableDataChanged();
    }

    //-----------------------------------------------------
    //Métodos personalizados
    //-----------------------------------------------------
    public void inserir(Produto p) {
        produtos.add(p);

        fireTableDataChanged();
    }

    public void excluir(String pos) {
        produtos.remove(pos);

        fireTableDataChanged();
    }

    public void excluir(Produto p) {
        produtos.remove(p);

        fireTableDataChanged();
    }

    public void ordenarPorValor() {
        //ordena pelo nome
        Collections.sort(produtos, new Comparator&lt;Produto&gt;() {

            public int compare(Produto o1, Produto o2) {
                return o1.getValorDespesa().compareTo(o2.getValorDespesa());
            }
        });
        //avisa que a tabela foi alterada
        fireTableDataChanged();
    }
    

    public void misturar() {
        //mistura a lista
        Collections.shuffle(produtos);

        //avisa que a tabela foi alterada
        fireTableDataChanged();
    }

    public Produto getCliente(int pos) {
        if (pos &gt;= produtos.size()) {
            return null;
        }

        return produtos.get(pos);
    }
}
A

Coloca no lugar deste

este

porque se for isto esta dando erro

A
Continua dando erro
public ProdutoTableModel(java.util.List<model.Produto> lista) {  
        this();  
        produtos.addAll(lista); // está linha esta dando erro 
    }
V

Isso indica que possivelmente existam ou 2 classes chamadas List, ou 2 classes chamadas Produto em seu projeto.

Você pode alterar a declaração da lista (linha 20 do ProductTableModel) para:

Provavelmente o código vai pelo menos compilar a partir daí.

A

abaixo

A

Está dando erro:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.swing.table.AbstractTableModel;

public class ProdutoTableModel extends AbstractTableModel {

    //constantes que vão representar as colunas
    //(só para facilitar o entendimento do código)
    private final int COL_Despesa = 0;
    private final int COL_Estabelecimento = 1;
    private final int COL_DataDespesa = 2;
    private final int COL_ValorDespesa = 3;
    private final int COL_FormaPagamento = 4;
    private final int COL_DataCheque = 5;
    private final int COL_NumeroCheque = 6;

    //lista dos produtos que serão exibidos
   private java.util.List<model.Produto> produtos; 

    public ProdutoTableModel() {
        produtos = new ArrayList();
    }

   public ProdutoTableModel(java.util.List<model.Produto> lista) {
        this();
        produtos.addAll(lista);
    }

    public int getRowCount() {
        //cada produto na lista será uma linha
        return produtos.size();
    }

    public int getColumnCount() {
        //vamos exibir só Nome e Quantidade, então são 7 colunas
        return 7;
    }

    @Override
    public String getColumnName(int column) {
        //qual o nome da coluna
        if (column == COL_Despesa) {
            return "Despesa";
        } else if (column == COL_Estabelecimento) {
            return "Estabelecimento";
        }
          else if (column == COL_DataDespesa) {
            return "Data da Despesa";
        }
          else if (column == COL_ValorDespesa) {
            return "Valor da Despesa";
        }
          else if (column == COL_FormaPagamento) {
            return "Forma de Pagamento";
        }
          else if (column == COL_DataCheque) {
            return "Data do Cheque";
        }
          else if (column == COL_NumeroCheque) {
            return "Numero do Cheque";
        }
        return "";
    }

    @Override
    public Class getColumnClass(int columnIndex) {
        //retorna a classe que representa a coluna
        if (columnIndex == COL_Despesa) {
            return String.class;
        } else if (columnIndex == COL_Estabelecimento) {
            return String.class;
        }
          else if (columnIndex == COL_DataDespesa) {
            return String.class;
        }
          else if (columnIndex == COL_ValorDespesa) {
            return String.class;
        }
          else if (columnIndex == COL_FormaPagamento) {
            return String.class;
        }
          else if (columnIndex == COL_DataCheque) {
            return String.class;
        }
          else if (columnIndex == COL_NumeroCheque) {
            return String.class;
        }
        return String.class;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        //pega o produto da linha
        ProdutoTabela p = produtos.get(rowIndex);//esta dando erro aqui

        //verifica qual valor deve ser retornado
        if (columnIndex == COL_Despesa) {
            return p.getDespesa();
        } else if (columnIndex == COL_Estabelecimento) {
            return p.getEstabelecimento();
        }
          else if (columnIndex == COL_DataDespesa) {
            return p.getDataDespesa();
        }
          else if (columnIndex == COL_ValorDespesa) {
            return p.getValorDespesa();
        }
          else if (columnIndex == COL_FormaPagamento) {
            return p.getFormaPagamento();
        }
          else if (columnIndex == COL_DataCheque) {
            return p.getDataCheque();
        }
          else if (columnIndex == COL_NumeroCheque) {
            return p.getNumeroCheque();
        }
        return "";
    }
        @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        //no nosso caso todas vão ser editáveis, entao retorna true pra todas
        return true;
    }

   @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        //pega o produto da linha
        ProdutoTabela p = produtos.get(rowIndex);//esta dando erro aqui

        //verifica qual valor vai ser alterado
        if (columnIndex == COL_Despesa) {
            p.setDespesa(aValue.toString());
        } else if (columnIndex == COL_Estabelecimento) {
            p.setEstabelecimento(aValue.toString());
        }
          else if (columnIndex == COL_DataDespesa) {
            p.setDataDespesa(aValue.toString());
        }
          else if (columnIndex == COL_ValorDespesa) {
            p.setValorDespesa(aValue.toString());
        }
          else if (columnIndex == COL_FormaPagamento) {
            p.setFormaPagamento(aValue.toString());
        }
          else if (columnIndex == COL_DataCheque) {
            p.setDataCheque(aValue.toString());
        }
          else if (columnIndex == COL_NumeroCheque) {
            p.setNumeroCheque(aValue.toString());
        }
        //avisa que os dados mudaram
        fireTableDataChanged();
    }

    //-----------------------------------------------------
    //Métodos personalizados
    //-----------------------------------------------------
    public void inserir(ProdutoTabela p) {
        produtos.add(p);

        fireTableDataChanged();
    }

    public void excluir(String pos) {
        produtos.remove(pos);

        fireTableDataChanged();
    }

    public void excluir(ProdutoTabela p) {
        produtos.remove(p);

        fireTableDataChanged();
    }

    public void ordenarPorValor() {
        //ordena pelo nome
        Collections.sort(produtos, new Comparator<ProdutoTabela>() {//esta dando erro aqui no sort

            public int compare(ProdutoTabela o1, ProdutoTabela o2) {
                return o1.getValorDespesa().compareTo(o2.getValorDespesa());
            }
        });
        //avisa que a tabela foi alterada
        fireTableDataChanged();
    }
    

    public void misturar() {
        //mistura a lista
        Collections.shuffle(produtos);

        //avisa que a tabela foi alterada
        fireTableDataChanged();
    }

    public ProdutoTabela getCliente(int pos) {
        if (pos >= produtos.size()) {
            return null;
        }

        return produtos.get(pos);//esta dando erro  aqui
    }
}
A

Esta nestas linhas:

Aqui:

Aqui:

Collections.sort(produtos, new Comparator<ProdutoTabela>() {//esta dando erro aqui no sort

E aqui:

return produtos.get(pos);//esta dando erro  aqui

o erro que está dando:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - cannot find symbol
  symbol:   constructor ProdutoTableModel(java.util.List<model.Produto>)
  location: class ProdutoTableModel
        at Tela_Principal.PreencherTabela(Tela_Principal.java:599)
        at Tela_Principal.btTabelaActionPerformed(Tela_Principal.java:461)
        at Tela_Principal.access$500(Tela_Principal.java:6)
        at Tela_Principal$6.actionPerformed(Tela_Principal.java:121)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6267)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6032)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÍDO COM SUCESSO (tempo total: 58 segundos)
V

Ué cara, se a classe que tem no model é a Produto, pq nessas linhas vc usa ProdutoTabela?

A

Entao a classe que era Produto mudei para ProdutoTabela por que vc falou que nao poderia ser igual

V

A graça de trabalhar com JTable é justamente pq vc pode trabalhar diretamente com suas classes de negócio.
Não precisa existir uma classe de Produto só para a tabela.

Então, a mesma classe de Produto que você carrega no seu Dao, será a classe de Produto que você utilizará dentro do seu JTable.

A classe ProdutoTabela não precisaria sequer existir.

A

Vamos ver se eu entendi, eu posso ter as duas classes em uma só

A

por exemplo a classe produto ter DAO e a Table Model

A

Mas você não conseguiu identificar o erro?

V

O que é a classe ProdutoTabela?

Ela não é seu TableModel, e também não é a classe Produto.

V

Esses métodos, do seu TableModel, deveriam trabalhar com a classe Produto. Não sei o que era a classe ProdutoTabela que estava aqui:

public void inserir(Produto p) {  
        produtos.add(p);  
        fireTableDataChanged();  
    }  
 
    public void excluir(Produto p) {  
        produtos.remove(p);    
        fireTableDataChanged();  
    }  
  
    public void ordenarPorValor() {  
        //ordena pelo nome  
        Collections.sort(produtos, new Comparator&lt;Produto&gt;() {//esta dando erro aqui no sort  
  
            public int compare(Produto o1, Produto o2) {  
                return o1.getValorDespesa().compareTo(o2.getValorDespesa());  
            }  
        });  
        //avisa que a tabela foi alterada  
        fireTableDataChanged();  
    }

Eu não sei o que é a classe ProdutoTabela. O que estou dizendo é que dentro do Model, você só precisa trabalhar com a classe que vem do Dao, no caso, Produto.

A

ProdutoTabela:

public class ProdutoTabela {

    private String despesa;
    private String estabelecimento;
    private String datadespesa;
    private String valordespesa;
    private String formapagamento;
    private String datacheque;
    private String numerocheque;

    public ProdutoTabela() {
    }

    public ProdutoTabela(String despesa,String estabelecimento,String datadespesa,String valordespesa,String formapagamento,String datacheque,String numerocheque) {
        this.despesa = despesa;
        this.estabelecimento = estabelecimento;
        this.datadespesa = datadespesa;
        this.valordespesa = valordespesa;
        this.formapagamento = formapagamento;
        this.datacheque = datacheque;
        this.numerocheque = numerocheque;
    }

    //Gets

    public String getDespesa() {
        return despesa;

}
     public String getEstabelecimento() {
        return estabelecimento;

}
      public String getDataDespesa() {
        return datadespesa;

}
       public String getValorDespesa() {
        return valordespesa;

}
        public String getFormaPagamento() {
        return formapagamento;

}
         public String getDataCheque() {
        return datacheque;

}
          public String getNumeroCheque() {
        return numerocheque;

}
      //Sets

      public void setDespesa(String despesa) {
        this.despesa = despesa;
    }
       public void setEstabelecimento(String estabelecimento) {
        this.estabelecimento = estabelecimento;
    }
        public void setDataDespesa(String datadespesa) {
        this.datadespesa = datadespesa;
    }
         public void setValorDespesa(String valordespesa) {
        this.valordespesa = valordespesa;
    }
          public void setFormaPagamento(String formapagamento) {
        this.formapagamento = formapagamento;
    }
           public void setDataCheque(String datacheque) {
        this.datacheque = datacheque;
    }
            public void setNumeroCheque(String numerocheque) {
        this.numerocheque = numerocheque;
    }

}

Pacote Produto do banco

package model;

public class Produto {
   private String despesa;
   private String estabelecimento;
   private String datadadespesa;
   private String valordadespesa;
   private String formadepagamento;
   private String datacheque;
   private String numerocheque;
   private String mes;


   public void setDespesa(String despesa) {
      this.despesa = despesa;
   }
   public void setEstabelecimento(String estabelecimento) {
      this.estabelecimento = estabelecimento;
   }
   public void setDatadaDespesa(String datadadespesa) {
      this.datadadespesa = datadadespesa;
   }
   public void setValordaDespesa(String valordadespesa) {
      this.valordadespesa = valordadespesa;
   }
   public void setFormadePagamento(String formadepagamento) {
      this.formadepagamento = formadepagamento;
   }
   public void setDataCheque(String datacheque) {
      this.datacheque = datacheque;
   }
   public void setNumeroCheque(String numerocheque) {
      this.numerocheque = numerocheque;
   }
   public void setMes(String mes) {
      this.mes = mes;
   }


   public String getDespesa() {
      return this.despesa;
   }
   public String getEstabelecimento() {
      return this.estabelecimento;
   }
   public String getDatadaDespesa() {
      return this.datadadespesa;
   }
   public String getValordaDespesa() {
      return this.valordadespesa;
   }
   public String getFormadePagamento() {
      return this.formadepagamento;
   }
   public String getDataCheque() {
      return this.datacheque;
   }
    public String getNumeroCheque() {
      return this.numerocheque;
   }
    public String getMes() {
      return this.mes;
   }
}

Não sei se é a mesma coisa

V

Por que existem 2 classes idênticas? Simplesmente apague a ProdutoTabela e trabalhe apenas com a Produto.

Outra dúvida, pq dentro das suas classe só tem Strings?
Os valores não deveriam ser doubles, as datas não deveriam ser Calendars?

A

Vini vou trabalhar, mas obrigado pela sua atenção vou refazer meu codigo, logo mais entro em contato

obrigado

A

Então eu como estou aprendendo estou trabalhando com access, sempre da erro nao cadastra no banco

A

nao sei o que é

F

Olha, usar AbstractTableModel é bem simples, eu também como você usei bastante DefaultTableModel até ir para o Abstract e hoje uso models para JTable, JComboBox e JList

A idéia do AbstractTableModel é seguir o modelo do Bean(POJO) exibindo/alterando o que vc precisa. Veja, um exemplo simples

public class Usuarios{
       // Bean(POJO) de Usuarios
       private Long id;
       private String usuario;
       private String senha;

       public Usuarios(){
       }
        //set e get
}


public class UsuariosDAO{
       // DAO de Usuarios
       private Connection con;
       
       public UsuariosDAO(){
           this.con = ConectaMySQL.getConnection();
       }
 
       public List<Usuarios> getUsuarios(){
               List<Usuarios> lista = new ArrayList<Usuarios>();
               PreparedStatement stm = this.con.prepareStatement("SELECT * FROM usuarios");
               ResultSet rs = stm.executeQuery();
               while(rs.next()){
                        Usuarios u = new Usuarios();
                        u.setId(rs.getLong("idUsuario"));
                        u.setUsuario(rs.getString("usuario"));
                        lista.add(u);
               }  
                rs.close();
                stm.close();
                return lista;
       }
}

public class UsuariosTableModel extends AbstractTableModel{
       // TableModel de Usuarios
       private List<Usuarios> listaUsuarios;
       private String[] colunas = {"Id", "Usuario"};

       public UsuariosTableModel(){
             listaUsuarios = new ArrayList<Usuarios>();
       }

       public UsuariosTableModel(List<Usuarios> listaU){
             this();
             listaUsuarios.addAll(listaU);
       } 

       public int getRowCount() {    
        return this.listaUsuarios.size();
    }

    @Override
    public int getColumnCount() {
        return this.listaUsuarios.length;
    }

     public String getColumnName(int column){        
        if(colunas[column] == "Id"){
            return "Id";
        }else if(colunas[column] == "Usuario"){            
            return "Usuario";
        }
        return new String();
    }

     public Class getColumnClass(int column){         
         if(colunas[column] == "Id"){
             return Long.class;
         }else if(colunas[column] == "Usuario"){
            return String.class;
         }
        return String.class;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {   
            Usuarios u = this.listaUsuarios.get(rowIndex);
            switch(columnIndex){
                case 0: return u.getId();
                case 1: return u.getUsuario();                    
                default: return new String();
   }                   


}



public class ExibeUsuarios extends JFrame{
      //Exibindo os usuarios na JTable.
      private UsuariosTableModel model;
      private JTable tabelaUsuarios;

      public ExibeUsuarios(){
           List<Usuarios> lista = new UsuariosDAO.getUsuarios();
           model = new UsuariosTableModel(lista);
           tabelaUsuarios = new JTable();
           tabelaUsuarios.setModel(model);

      }

}

Basicamente é isto, voce pode implementar os metodos como setValueAt etc…Para saber mais basta vc acessar a classe AbstractTableModel e ver os metodos q ela implementa e reescreve-los.

t+ e boa sorte.

A

Fernando então é só eu adaptar este codigo no meu table model

A

Vini e Fernando vou fazer o que voceis me pediram e vou readaptar meu codigo reescrever, mas logo mais estarei aqui para encher o saco de voceis rsrsrs, agora tenho que ir

Muito obrigado mesmo pessoal

A

Pessoal estou de volta Vini agora com outra duvida voce estava certo eu fui noob em relação ao erro, era classe duplicada, apaguei produtotabela, ai já era, Obrigado, mas agora estou com a duvida de poder alterar

Codigo alterar classe Dao:

public void atualizar(Produto despesa) {
      conectar();
      String com = "UPDATE Produto SET " +
                   "despesa= '" + despesa.getDespesa() + "'," +
   	   	   "estabelecimento= '" + despesa.getEstabelecimento() + "'," +
   	   	   "datadadespesa='" + despesa.getDatadaDespesa() + "'," +
   	   	   "valordadespesa='" + despesa.getValordaDespesa() + "'," +
   	   	   "formadepagamento='" + despesa.getFormadePagamento() + "'," +
                   "datacheque='" + despesa.getDataCheque() + "' " +
                   "numerocheque='" + despesa.getNumeroCheque() + "' " +
                   "mes='" + despesa.getMes() + "' " +
   	   	   " WHERE despesa = '" + despesa.getDespesa() + "'";
      try {
         comando.executeUpdate(com); 
         JOptionPane.showMessageDialog(null,"Operação realizada com sucesso!");
      } catch (SQLException e){
         e.printStackTrace();
      } finally {
         fechar();
      }
   }

o restante do codigo da tabela voce ja sabe.

Obrigado, agora estou me adaptando a tablemodel bem melhor sem comparação

A

TableModel sem comparação

F

alucardmaas:
Pessoal estou de volta Vini agora com outra duvida voce estava certo eu fui noob em relação ao erro, era classe duplicada, apaguei produtotabela, ai já era, Obrigado, mas agora estou com a duvida de poder alterar

Codigo alterar classe Dao:

public void atualizar(Produto despesa) {
      conectar();
      String com = "UPDATE Produto SET " +
                   "despesa= '" + despesa.getDespesa() + "'," +
   	   	   "estabelecimento= '" + despesa.getEstabelecimento() + "'," +
   	   	   "datadadespesa='" + despesa.getDatadaDespesa() + "'," +
   	   	   "valordadespesa='" + despesa.getValordaDespesa() + "'," +
   	   	   "formadepagamento='" + despesa.getFormadePagamento() + "'," +
                   "datacheque='" + despesa.getDataCheque() + "' " +
                   "numerocheque='" + despesa.getNumeroCheque() + "' " +
                   "mes='" + despesa.getMes() + "' " +
   	   	   " WHERE despesa = '" + despesa.getDespesa() + "'";
      try {
         comando.executeUpdate(com); 
         JOptionPane.showMessageDialog(null,"Operação realizada com sucesso!");
      } catch (SQLException e){
         e.printStackTrace();
      } finally {
         fechar();
      }
   }

o restante do codigo da tabela voce ja sabe.

Obrigado, agora estou me adaptando a tablemodel bem melhor sem comparação

Primeira coisa é não concatenar seus SQL, use PreparedStatement veja.

public void updateUsuario(Usuarios u){
PreparedStatement stm = con.prepareStatement("UPDATE usuarios SET nome = ?, login = ? WHERE id = ?");
stm.setString(1, u.getNome());
stm.setString(2, u.getLogin());
stm.setLong(3, u.getId());
stm.executeUpdate();
}

Segunda coisa, siga esse link para Update e Delete dos seus objetos de persistencia: http://www.guj.com.br/java/260577-abstracttablemodel-removendo-registro-do-bd-

t+ e boa sorte.

A

Fernando eu não quero mudar meu código da table model, quero continuar usando aquele, tudo bem que mudo a classe Dao que achei bem melhor, mas eu quero trabalhar com pacote fica mais organizado, então como eu adaptaria meu código Dao com TableModel na classe principal, já consegui exibir

Código Exibir:

public void PreencherTabela(){

                List<Produto> lista = daoProduto.buscarTodos();
                ProdutoTableModel tabela = new ProdutoTableModel(lista);
                tblBanco.setModel(tabela);

            }

Agora se possível quero uma solução para update a também já consegui excluir:

private void btExcluirActionPerformed(java.awt.event.ActionEvent evt) {                                          

        if(evt.getSource()==btExcluir){

          int row = tblBanco.getSelectedRow();
                if (row != -1) {
                    int mod = tblBanco.getColumn("Despesa").getModelIndex();
                    int col = tblBanco.convertColumnIndexToView(mod);
                    String id =  (String) tblBanco.getValueAt(row, col);
                    daoProduto.apagar(id);

                } else {
                    // mostrar advertência?
                }


        }
        PreencherTabela();
    }

Por favor uma solução

F

Se vc ler o post inteiro vai ver q o Vini mostrou como fazer tanto o update como o delete.

veja aqui

//retornando o objeto do TableModel
public Caixa get(int row) {  
   return caixa.get(row);  
}  

//pegando o objeto retornado e fazendo o q preciso
Caixa c = model.get(linhaSelecionada);  
new CaixaDao().removeRegistro(c.getId());  
suaTable.removeRow(linhaSelecionada);

Leia o post como falei, vai entender como fazer.

t+ e boa sorte.

A

Leonardo não estou conseguindo ver o metodo update la no seu post so o remover

A

Para eu inserir eu faço este metodo como adaptaria isto para inserir atraves da tabela

despesa.setDespesa(tfDescricao.getText());
         despesa.setEstabelecimento(jTextField1.getText());
         despesa.setDatadaDespesa(tfData_Despesa.getText());
         despesa.setValordaDespesa(tfValor_Despesa.getText());
         despesa.setDataCheque(tfDataCheque.getText());
         despesa.setNumeroCheque(tfNumeroCheque.getText());
         despesa.setFormadePagamento(formadepagamento);
         daoProduto.insere(despesa);
A

Fiz isto mas deu erro:

private void btAlterarActionPerformed(java.awt.event.ActionEvent evt) {                                          

       if(evt.getSource()==btAlterar){

                int row = tblBanco.getSelectedRow();
                if (row != -1) {
         despesa.setDespesa(tblBanco.getColumnName(0));
         despesa.setEstabelecimento(tblBanco.getColumnName(1));
         despesa.setDatadaDespesa(tblBanco.getColumnName(2));
         despesa.setValordaDespesa(tblBanco.getColumnName(3));
         despesa.setDataCheque(tblBanco.getColumnName(4));
         despesa.setNumeroCheque(tblBanco.getColumnName(5));
         despesa.setFormadePagamento(tblBanco.getColumnName(6));
         daoProduto.atualizar(despesa);

                } else {
                    // mostrar advertência?
                }

              PreencherTabela();
        }
          
    }

Erro:

java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe (operador faltando) na express?o de consulta ''Forma de Pagamento' numerocheque='Data do Cheque' mes='null''.
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
        at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
        at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)
        at dao.DaoProduto.atualizar(DaoProduto.java:73)
        at Tela_Principal.btAlterarActionPerformed(Tela_Principal.java:483)
        at Tela_Principal.access$1100(Tela_Principal.java:7)
        at Tela_Principal$13.actionPerformed(Tela_Principal.java:191)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6267)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6032)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
Conexão Fechada
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Conectado!
Criado 21 de fevereiro de 2012
Ultima resposta 22 de fev. de 2012
Respostas 63
Participantes 4