Usando Interface

2 respostas
E

Bom pessoal gostaria que me ajudassem em uma coisa, eu estou tentando passar um valor para outra classe uma tela de venda dai a pessoa vai adicionar os itens vai da o valor final, dai eu quero passar esse valor final para a outra classe tentando usando a interface, só que não sei o que está faltando em meu código para funcionar direito na hora de passar para o listener simplesmente da erro dando NullPointerExpection.

public class MVenda extends javax.swing.JFrame implements PckMaterial.PckMaterialListener {
    
    private MVendaListener mVendaListener = null;  
    DefaultTableModel defaultTableModel;
    List<Double> listaTotalPrecoMaterial = new ArrayList<>();
    double totalPrecoMaterial = 0;

    private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
        this.setListener(mVendaListener);
        inicializaJTable(defaultTableModel);
    }

    private void jButtonVendaFinalizarActionPerformed(java.awt.event.ActionEvent evt) {                                                      
        
        this.setListener(mVendaListener);
        mVendaListener.totalPrecoMateriais(jLabelVendaTotalPrecoMateriais.getText());
        
        PVendaFinalizarCompra pVendaFinalizarCompra = new PVendaFinalizarCompra();
        pVendaFinalizarCompra.setVisible(true);
        
    } 

    public interface MVendaListener {
        void totalPrecoMateriais(String s);
    }
    
    public void setListener(MVendaListener mVendaListener) {
        this.mVendaListener = mVendaListener;
    }
}

Essa é a parte do código da Classe MVenda da onde eu quero pegar esse valor que é um JLabel e passar para a outra classe PVendaFinalizarCompra que está abaixo, o que estou postando é só as partes que estou usando o listener.

public class PVendaFinalizarCompra extends javax.swing.JFrame implements MVenda.MVendaListener {

    public void totalPrecoMateriais(String s) {
        jLabelVendaFinalizarTotalPrecoMateriais.setText(s);
    }

}

2 Respostas

asandrob

Provavelmente dá o erro quando tu clica no botão não é?
Note que v não cria esse objeto:

private MVendaListener mVendaListener = null;

Tente assim:

//criar o objeto aqui....
        MVendaListener mVendaListener = new MVendaListener();
        this.setListener(mVendaListener);  
        mVendaListener.totalPrecoMateriais(jLabelVendaTotalPrecoMateriais.getText());  
          
        PVendaFinalizarCompra pVendaFinalizarCompra = new PVendaFinalizarCompra();  
        pVendaFinalizarCompra.setVisible(true);
E

Se eu tento fazer o que você falou ele tipo coloca isso, e o erro está dando exatamente na hora que eu clico no botão mesmo.

MVendaListener mVendaListener = new MVendaListener() {

            @Override
            public void totalPrecoMateriais(String s) {
                throw new UnsupportedOperationException("Not supported yet.");
            }
        };
Criado 24 de outubro de 2012
Ultima resposta 24 de out. de 2012
Respostas 2
Participantes 2