I want to display in my JTextArea (ConsoleTxt) all the Printlns of my other class. I already put a reference of GUI class in the other class, but this error appears: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException"
There is My GUI Code:
package Execucao;
import static java.lang.Thread.sleep;
import java.util.ArrayList;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
public class Interface extends javax.swing.JFrame {
int pc = 0, opCode, op1, op2, rx, ry;
String iR;
int endereço = 0;
ArrayList<String> mem = new ArrayList<String>();
MemoryTable mCard = new MemoryTable();
UnidadeBusca b = new UnidadeBusca();
Decodificador dec = new Decodificador();
Registradores r = new Registradores();
Ula ula = new Ula();
MovimentoDados dFluxo = new MovimentoDados();
/**
 * Creates new form Interface
 */
public Interface(JTextArea ConsoleTxt) {
    this.ConsoleTxt = ConsoleTxt;
}
public Interface() {        
    this.endereço = endereço;
    initComponents();
    Op1Txt.setDocument(new LimDigit(6));
    Op2Txt.setDocument(new LimDigit(6));
public int executar() {
    append("Memória:");
    for(int i = 0; i < mem.size(); i++) {            
        String palavra = mem.get(i);
        append("|"+ palavra + "|");
    }
    while (pc < mem.size()){
        append("\nIniciando busca...");
        b.buscar(pc, mem);          
        iR = b.getiR();
        append("\nA palavra de endereço "+ pc +" é: "+ iR+".");
        append("\nDecodificando palavra...");
        dec.decodificar(pc, iR); 
        opCode = dec.getOperacao();
        op1 = dec.getOp1();
        op2 = dec.getOp2();
        append("\nCarregando valor do Operando 1 em Rx...");
        r.armazenarDado(op1);           
        rx = r.getRx();
        if (dec.decodId() == 0){
            append("\nCarregando valor do Operando 2 em Ry...");
            r.armazenarDado(op2);
            ry = r.getRy();
            append("\nExecutando Instrução...");
            ula.executarOp(opCode, rx, ry);
            dFluxo.executarOp(opCode, rx, ry);
        }
        else{
            append("\nExecutando Instrução...");
    ula.executarOp(opCode, rx, op2);
    dFluxo.executarOp(opCode, rx, op2);
        }
        r.zerarBanco();
        if (opCode == 6)
            pc = dFluxo.getPc();
        else
    pc++;
}
    return 0;
}
private void jBAdicionarActionPerformed(java.awt.event.ActionEvent evt) {                                            
    String OpCod = OpCodeTxt.getText();
    String Op1 = Op1Txt.getText();
    String OpId = Op2IdTxt.getText();
    String Op2 = Op2Txt.getText();
    String palavra = OpCod.concat(Op1).concat(OpId).concat(Op2);
    Object[] linha = {endereço, palavra};
    DefaultTableModel model = (DefaultTableModel) jTMemoria.getModel();
    endereço++;
    mem.add(palavra);
    model.addRow(linha);
}                                           
private void jRNotActionPerformed(java.awt.event.ActionEvent evt) {                                      
    if (jRNot.isSelected())
        OpCodeTxt.setText("000");
}                                     
private void jRAndActionPerformed(java.awt.event.ActionEvent evt) {                                      
    if (jRAnd.isSelected())
        OpCodeTxt.setText("001");
}                                     
private void jRAddActionPerformed(java.awt.event.ActionEvent evt) {                                      
    if (jRAdd.isSelected())
        OpCodeTxt.setText("010");
}                                     
private void jRSubActionPerformed(java.awt.event.ActionEvent evt) {                                      
    if (jRSub.isSelected())
        OpCodeTxt.setText("011");
}                                     
private void jRMovActionPerformed(java.awt.event.ActionEvent evt) {                                      
    if (jRMov.isSelected())
        OpCodeTxt.setText("100");
}                                     
private void jRJmpActionPerformed(java.awt.event.ActionEvent evt) {                                      
    if (jRJmp.isSelected())
        OpCodeTxt.setText("101");
}                                     
private void OpCodeTxtActionPerformed(java.awt.event.ActionEvent evt) {                                          
    // TODO add your handling code here:
}                                         
private void Op1TxtActionPerformed(java.awt.event.ActionEvent evt) {                                       
}                                      
private void jRHaltActionPerformed(java.awt.event.ActionEvent evt) {                                       
    if (jRHalt.isSelected())
        OpCodeTxt.setText("110");
}                                      
private void jBCompilarActionPerformed(java.awt.event.ActionEvent evt) {                                           
    executar();
}                                          
private void jRRegActionPerformed(java.awt.event.ActionEvent evt) {                                      
    if (jRReg.isSelected())
        Op2IdTxt.setText("0");
}                                     
private void jRImediatoActionPerformed(java.awt.event.ActionEvent evt) {                                           
    if (jRImediato.isSelected())
        Op2IdTxt.setText("1");
}                                          
public void append(String str){
    ConsoleTxt.append(str + "\n");
}
private void bTesteActionPerformed(java.awt.event.ActionEvent evt) {                                       
    String address = Integer.toString(jTMemoria.getRowCount());
    ConsoleTxt.setText("");
}                                      
public void setEndereço(int endereço) {
    this.endereço = endereço;
}
public int getEndereço() {
    return endereço;
}
public void setConsoleTxt(JTextArea ConsoleTxt){
    this.ConsoleTxt = ConsoleTxt;
}
public JTextArea getConsoleTxt(){
    return ConsoleTxt;
}
/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    /* Set the Nimbus look and feel */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(Interface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(Interface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(Interface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(Interface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>
    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            Interface gui = new Interface();
            new Interface().setVisible(true);
        }
    });
}
// Variables declaration - do not modify                     
private javax.swing.JTextArea ConsoleTxt;
private javax.swing.JTextField Op1Txt;
private javax.swing.JTextField Op2IdTxt;
private javax.swing.JTextField Op2Txt;
private javax.swing.JTextField OpCodeTxt;
private javax.swing.JButton bTeste;
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.ButtonGroup buttonGroup2;
private javax.swing.JButton jBAdicionar;
private javax.swing.JButton jBCompilar;
private javax.swing.JButton jBRemove;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JPanel jPanel1;
private javax.swing.JRadioButton jRAdd;
private javax.swing.JRadioButton jRAnd;
private javax.swing.JRadioButton jRHalt;
private javax.swing.JRadioButton jRImediato;
private javax.swing.JRadioButton jRJmp;
private javax.swing.JRadioButton jRMov;
private javax.swing.JRadioButton jRNot;
private javax.swing.JRadioButton jRReg;
private javax.swing.JRadioButton jRSub;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTable jTMemoria;
// End of variables declaration                   
}
And there is My Other Class Code:
package Execucao;
import java.util.Scanner;
import javax.swing.JTextArea;
public class Decodificador {
    Scanner enter = new Scanner(System.in);
private int maskInst, maskRM, maskOp1, maskOp2, operacao, op1, op2, idOp2, opId, tipOp2, imediato, numDec;
String X, Y, TipOp2;
    private Interface w;
public Decodificador ()
{}
public Decodificador (int op1, int op2, int idOp2, int operacao, int opId, int numDec, Interface gui) {
    this.op1 = op1;
    this.op2 = op2;
    this.idOp2 = idOp2;
    this.operacao = operacao;
    this.opId = opId;
    this.numDec = numDec;
            w = gui;
    }
public int decodId() {
    idOp2 = ((numDec & maskRM) >> 6);
    switch(idOp2) {
    case 0: 
        TipOp2 = "ry";
        tipOp2 = 0;
        break;
    case 1: imediato = op2;
        TipOp2 = "imediato";
        tipOp2 = 1;
        break;
    }
    return tipOp2;
}
public int decodificar(int pc, String iR){
    numDec = 0;
    int j;
    int k = 0;
    for(j = 15; j >= 0; j--) {
        if (iR.charAt(j) == '1')
            numDec += Math.pow(2, k);
        k++;
    }
            System.out.println("Palavra "+(pc)+" convertida para decimal: "+ numDec + ".");
            w.append("Palavra "+(pc)+" convertida para decimal: "+ numDec + ".");
    maskInst = 0b1110000000000000;
    maskRM = 0b0000000001000000;
    maskOp1 = 0b0001111110000000;
    maskOp2 = 0b0000000000111111;
    operacao = ((numDec & maskInst) >> 13); 
    op1 = ((numDec & maskOp1) >> 7);
    op2 = (numDec & maskOp2);
    System.out.println("MASCARA DA OPERA��O:("+numDec+" & "+ maskInst +"): "+operacao+ ".");
    System.out.println("MASCARA DO OPERANDO 1:("+numDec+" & "+ maskOp1 +"): "+op1+ ".");
    System.out.println("MASCARA DO OPERANDO 2:("+numDec+" & "+ maskOp2 +"): "+op2+ ".");
    switch(operacao){
        case 0: 
            X = "lógica";
            Y = "NOT";
            break;
        case 1:
            X = "lógica";
            Y = "AND";
            break;
        case 2:
            X = "aritmética";
            Y = "ADD";
            break;
        case 3: 
            X = "aritmética";
            Y = "SUB";
            break;
        case 4: 
            X = "de desvio de fluxo";
            Y = "MOV";
            break;
        case 5: 
            X = "de desvio de fluxo";
            Y = "JMP";
            break;
                    case 6:
                            X = "de desvio de fluxo";
            Y = "HTL";
            break;
    }
    decodId();
    System.out.println("Operação "+ X + " " + Y +" com operando(s): " + op1 + "(rx) e " + op2 + "("+TipOp2+")." );
    return 0;
}
public int getOperacao() {
    return operacao;
}
public void setOperacao(int operacao) {
    this.operacao = operacao;
}
public int getOp1() {
    return op1;
}
public void setOp1(int op1) {
    this.op1 = op1;
}
public int getOp2() {
    return op2;
}
public void setOp2(int op2) {
    this.op2 = op2;
}
public int getIdOp2() {
    return idOp2;
}
public void setIdOp2(int idOp2) {
    this.idOp2 = idOp2;
}
public int getNumDec() {
    return numDec;
}
public void setNumDec(int numDec) {
    this.numDec = numDec;
}
public int getOpId() {
    return opId;
}
public void setOpId(int opId) {
    this.opId = opId;
}
Error:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Execucao.Decodificador.decodificar(Decodificador.java:56)
at Execucao.Interface.executar(Interface.java:80)
at Execucao.Interface.jBCompilarActionPerformed(Interface.java:531)
at Execucao.Interface.access$1300(Interface.java:19)
at Execucao.Interface$15.actionPerformed(Interface.java:411)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6535)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6300)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4891)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Could you please, help me ?
 
     
    