Problema com o IF [resolvido]

8 respostas
R

Este 1º método é o botão consulta, da tela de consulta de contas à pagar, do pacote view.

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

        DespesasFixas_CRUD dfCRUD= new DespesasFixas_CRUD();

 /*lista esta recebendo o retorno do método consulta(DespesasFixas_CRUD),
e este código entre parenteses(List<DespesasFixas>), é para forçar a gravaçao na lista*/

         List<DespesasFixas> lista = (List<DespesasFixas>) dfCRUD.consulta3();


        DefaultTableModel modelo = (DefaultTableModel) jTable1.getModel(); // cria um modelo de tabela e já relaciona com a tabela
        modelo.setRowCount(0);

         PagamentoDespesas pg= new PagamentoDespesas();
            DespesasFixas df= new DespesasFixas();

           String nomePaga = pg.getNomeDespesaPaga();
           String nomeDespesa = df.getNomeDespesa();
        

         if ( ! nomePaga.equals(nomeDespesa) ) {//compara as Strings

             
        for (int a = 0; a < lista.size(); a++) { // FOR adiciona esses dados na tabela da parte visual, exatamente na mesma ordem  consecutiva que estam aqui dispostos.
        
            
            modelo.addRow(new Object[]{ //addRow esta adicionando uma linha com esses dados na tabela da parte visual.

                        lista.get(a).getNomeDespesa(),
                        lista.get(a).getDataVencDespesa(),
                        lista.get(a).getValorDespesa()
                    });

            }
             }
       
    
    }

Este método public List consulta3 é chamado pelo 1º método descrito acima através do objeto dfCRUD.consulta3.

public List consulta3() {

         List<DespesasFixas> lista = new ArrayList<DespesasFixas>();/*criaçao de uma lista do tipo List
          com a estrutura de um ArrayList, que contém as variaveis que estam na classe DespesasFixas.*/
         try {
                for (int i=0; i<despFixas.size();i++)
                {

                       DespesasFixas df = new DespesasFixas();

                       df.setCodDespesa(despFixas.get(i).getCodDespesa());
                       df.setDataDespesa(despFixas.get(i).getDataDespesa());
                       df.setDataVencDespesa(despFixas.get(i).getDataVencDespesa());
                       df.setNomeDespesa(despFixas.get(i).getNomeDespesa());
                       df.setQuantParcelaPaga(despFixas.get(i).getQuantParcelaPaga());
                       df.setQuantParcelaPagar(despFixas.get(i).getQuantParcelaPagar());
                       df.setValorDespesa(despFixas.get(i).getValorDespesa());
                       lista.add(df);

                }
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, "Erro: " + e.getMessage(),
                        "Consulta de contas à pagar", 0);
            }
        return lista;
      }

Problema: qdo as Strings são comparadas dentro da condição do "If", da erro e são geradas várias exeções.
O meu objetivo ao implementar este "if ", foi preencher uma tabela da tela de consulta de contas à pagar, somente com as contas que ainda não foram pagas.

Desde já agradeço a colaboração dos que poderem me ajudar com o código.
OBS.: estou desenvolvendo o projeto no padrão MVC.

8 Respostas

wagnerfrancisco

Quais exceções? Poste a parte relevante da stacktrace para alguém poder lhe ajudar!

R
reco162:
Este 1º método é o botão consulta, da tela de consulta de contas à pagar, do pacote view.
private void jButtonConsultaActionPerformed(java.awt.event.ActionEvent evt) {                                                

        DespesasFixas_CRUD dfCRUD= new DespesasFixas_CRUD();

 /*lista esta recebendo o retorno do método consulta(DespesasFixas_CRUD),
e este código entre parenteses(List<DespesasFixas>), é para forçar a gravaçao na lista*/

         List<DespesasFixas> lista = (List<DespesasFixas>) dfCRUD.consulta3();


        DefaultTableModel modelo = (DefaultTableModel) jTable1.getModel(); // cria um modelo de tabela e já relaciona com a tabela
        modelo.setRowCount(0);

         PagamentoDespesas pg= new PagamentoDespesas();
            DespesasFixas df= new DespesasFixas();

           String nomePaga = pg.getNomeDespesaPaga();
           String nomeDespesa = df.getNomeDespesa();
        

         if ( ! nomePaga.equals(nomeDespesa) ) {//compara as Strings

             
        for (int a = 0; a < lista.size(); a++) { // FOR adiciona esses dados na tabela da parte visual, exatamente na mesma ordem  consecutiva que estam aqui dispostos.
        
            
            modelo.addRow(new Object[]{ //addRow esta adicionando uma linha com esses dados na tabela da parte visual.

                        lista.get(a).getNomeDespesa(),
                        lista.get(a).getDataVencDespesa(),
                        lista.get(a).getValorDespesa()
                    });

            }
             }
       
    
    }

Este método public List consulta3 é chamado pelo 1º método descrito acima através do objeto dfCRUD.consulta3.

public List consulta3() {

         List<DespesasFixas> lista = new ArrayList<DespesasFixas>();/*criaçao de uma lista do tipo List
          com a estrutura de um ArrayList, que contém as variaveis que estam na classe DespesasFixas.*/
         try {
                for (int i=0; i<despFixas.size();i++)
                {

                       DespesasFixas df = new DespesasFixas();

                       df.setCodDespesa(despFixas.get(i).getCodDespesa());
                       df.setDataDespesa(despFixas.get(i).getDataDespesa());
                       df.setDataVencDespesa(despFixas.get(i).getDataVencDespesa());
                       df.setNomeDespesa(despFixas.get(i).getNomeDespesa());
                       df.setQuantParcelaPaga(despFixas.get(i).getQuantParcelaPaga());
                       df.setQuantParcelaPagar(despFixas.get(i).getQuantParcelaPagar());
                       df.setValorDespesa(despFixas.get(i).getValorDespesa());
                       lista.add(df);

                }
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, "Erro: " + e.getMessage(),
                        "Consulta de contas à pagar", 0);
            }
        return lista;
      }

Problema: qdo as Strings são comparadas dentro da condição do "If", da erro e são geradas várias exeções.
O meu objetivo ao implementar este "if ", foi preencher uma tabela da tela de consulta de contas à pagar, somente com as contas que ainda não foram pagas.

Desde já agradeço a colaboração dos que poderem me ajudar com o código.
OBS.: estou desenvolvendo o projeto no padrão MVC.

Aqui vão as exceções:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at view.TelaConsultaContasPagar.jButtonConsultaActionPerformed(TelaConsultaContasPagar.java:153)
at view.TelaConsultaContasPagar.access$000(TelaConsultaContasPagar.java:25)
at view.TelaConsultaContasPagar$2.actionPerformed(TelaConsultaContasPagar.java:107)
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:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
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:4574)
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)

wagnerfrancisco

Nesta linha:

String nomePaga = pg.getNomeDespesaPaga();

Provavelmente o método pg.getNomeDespesaPaga() está retornando nulo. Dá uma checada, mas considerando que você acabou de instanciar, a menos que tu inicialize ele no construtor, ele é nulo. Você queria fazer o que com ele exatamente?

R

Através dessa comparação de nomes, preencher uma tabela na TelaConsultaContaPagar no pacote view, com as despesas que ainda não foram pagas, ou seja, contas à pagar.

wagnerfrancisco

Tá estranho este código:

PagamentoDespesas pg= new PagamentoDespesas();
DespesasFixas df= new DespesasFixas(); 

String nomePaga = pg.getNomeDespesaPaga(); 
String nomeDespesa = df.getNomeDespesa();

if ( ! nomePaga.equals(nomeDespesa) )

Você acabou de criar estes objetos. Eu acho que você queria buscá-los de algum lugar, não?

R

wagnerfrancisco:
Tá estranho este código:

PagamentoDespesas pg= new PagamentoDespesas();
DespesasFixas df= new DespesasFixas(); 

String nomePaga = pg.getNomeDespesaPaga(); 
String nomeDespesa = df.getNomeDespesa();

if ( ! nomePaga.equals(nomeDespesa) )

Você acabou de criar estes objetos. Eu acho que você queria buscá-los de algum lugar, não?

Certo, acabei de criá-los, justamente para chamar os seus métodos- pg.getNomeDespesaPaga() da classe PagamentoDespesas e df.getNomeDespesa() da classe DespesasFixas- para fazer a condição do IF. O que quero buscar esta salvo em dois ArrayList ( public static ArrayList despFixas = new ArrayList() e public static ArrayList pagamento = new ArrayList();), um cadastrando o pagamento de despesas e outro cadastrando as despesas.

G

mas então, em vez de criar, vc tem q ler da lista, não?

lina

wagnerfrancisco:
Tá estranho este código:

PagamentoDespesas pg= new PagamentoDespesas();
DespesasFixas df= new DespesasFixas(); 

String nomePaga = pg.getNomeDespesaPaga(); 
String nomeDespesa = df.getNomeDespesa();

if ( ! nomePaga.equals(nomeDespesa) )

Você acabou de criar estes objetos. Eu acho que você queria buscá-los de algum lugar, não?

Oi,

Realmente esse código está muito estranho. A não ser que o construtor da classe PagamentoDespesas() e DespesasFixas() criem os objetos retornados em getNomeDespesaPaga() e getNomeDespesa(). O que não faria sentido nenhum.

Tchauzin!

Criado 6 de agosto de 2012
Ultima resposta 7 de ago. de 2012
Respostas 8
Participantes 4