NullPointerException ao tentar acessar JFrame já instanciado (swing)

Galera, estou com um problema que não achei a solução ainda. Me parece simples mas não achei uma saída. Tenho um projeto com vários JFrames. Um desses JFrames chamado InitialProtocol, abre outro JFrame chamado ViewIndexerInitialProtocol, quando é selecionado o arquivo e clicado em um botão. Quero que ao fechar este último JFrame, ele envie o parâmetro para habilitar um textField inicialmente desabilitado da tela InitialProtocol. Só que aí que está o problema. Eu consigo setar parâmetros a partir da JFrame InitialProtocol, mas quando tento fazer o inverso, é como se a tela não tivesse instanciada e dá NullPointerException…

Essa é a parte importante da classe InitialProtocol no qual chama a ViewIndexerInitialProtocol:

package sysdochu.telas;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;

/**
*

  • @author GeysonPereira
    */
    public class InitialProtocol extends javax.swing.JFrame {
private String pathFilePDF;
private ViewIndexerInitialProtocol viewIndexerInitialProtocol;
private Boolean signalCloseViewIndexerInitialProtocol;
private FirstWindow firstWindow;
/**
 * Creates new form InitialProtocol
 */
public InitialProtocol() {
    initComponents();
    setLocationView();
    openIndexerPage();
    closePage();
}
private void openIndexerPage() {
    pathFileInitialProtocol.setEnabled(true);
    pathFileInitialProtocol.setText("");
    cleanTextLogInitialProtocol();
}
private void cleanStates() {
    pathFilePDF = "";
    pathFileInitialProtocol.setEnabled(true);
    pathFileInitialProtocol.setText("");
    cleanTextLogInitialProtocol();
}
private void setLocationView() {
    setLocationCenterView();
}
private void closePage() {
    addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent evt) {
            if (JOptionPane.showConfirmDialog(null, "Deseja realmente sair?") == JOptionPane.OK_OPTION) {
                cleanStates();
                dispose();
            }
        }
    });
}
private void setLocationCenterView() {
    setLocationRelativeTo(null);
}
public void textLogInitialProtocol(String log) {
    textLogInitialProtocol.append(log + "\r\n");
}
private void cleanTextLogInitialProtocol() {
    textLogInitialProtocol.setText("");
}
private void openViewerIndexerInitialProtocol() {
    signalCloseViewIndexerInitialProtocol = false;
    if (pathFileInitialProtocol.getText().isEmpty()) {
        textLogInitialProtocol("Selecione um arquivo para indexar.");
        JOptionPane.showMessageDialog(rootPane, "Nenhum arquivo não foi selecionado.");
    } else if (!pathFileInitialProtocol.getText().endsWith(".pdf")) {
        textLogInitialProtocol("O documento selecionado não parece ser um PDF válido. Selecione o arquivo novamente.");
        JOptionPane.showMessageDialog(rootPane, "O documento selecionado não parece ser um PDF válido. Selecione o arquivo novamente.");
    } else {            
        if (viewIndexerInitialProtocol == null) {
            pathFileInitialProtocol.setEnabled(false);
            viewIndexerInitialProtocol = new ViewIndexerInitialProtocol();
            viewIndexerInitialProtocol.setVisible(true);
            viewIndexerInitialProtocol.setExtendedState(MAXIMIZED_BOTH);
            viewIndexerInitialProtocol.setStringPDF(pathFilePDF);
            System.out.println("Nulo\n");
            } else {
            pathFileInitialProtocol.setEnabled(false);
            viewIndexerInitialProtocol.setVisible(true);
            viewIndexerInitialProtocol.setState(JFrame.NORMAL);
            viewIndexerInitialProtocol.setExtendedState(MAXIMIZED_BOTH);
            viewIndexerInitialProtocol.setStringPDF(pathFilePDF);
            System.out.println("Não Nulo\n");
        }
    }
}
public void setEnableTextFieldCloseViewIndexer(Boolean text){
    pathFileInitialProtocol.setEnabled(text);
}

Essa é a outra classe…

package sysdochu.telas;

import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
*

  • @author GeysonPereira
    */
    public class ViewIndexerInitialProtocol extends JFrame {
InitialProtocol signalClose;
private String pathToPDF;
private javax.swing.JPanel panelPDF;
javax.swing.JFrame jframe;
/**
 * Creates new form ViewIndexarInitialProtocol
 */
public ViewIndexerInitialProtocol() {
    initComponents();
    createJPanel();
    maximizeView();
    openPDF();
    closePage();
}
private void closePage() {
    addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent evt) {
            if (JOptionPane.showConfirmDialog(null, "Deseja Cancelar? Esses dados serão perdidos.") == JOptionPane.OK_OPTION) {
                sendSignalClose();
                cleanStates();
                excludeJPanel();
                dispose();
            }
        }
    });
}
private void sendSignalClose(){
    signalClose.setEnableTextFieldCloseViewIndexer(true);
}

Quem puder ajudar, agradeço.

Cara
Eu não tenho solução
Mas digo logo três coisas

  1. Muda pra JavaFX
  2. Como imagino que realmente precise de Swing por algum motivo, tente mudar o valor de alguma variável. Quando retornar para a tela, verifica se a variavel é true ou false, por exemplo. Se for True habilita o campo
  3. Se nenhuma das duas opções for viável, então trabalha com JInternalFrame. Ele vai, provavelmente, acabar com o nullPointerException

O motivo de dar NullPointerException é que você fez um “círculo” com as informações. Seria como eu te fazer uma pergunta e te responder com a mesma pergunta. Ninguém obtém resposta. Então, usa uma outra variável, ou tenta mudar a tela e tal. JInternalFrame pode ser uma saída. Ou mesmo, uma classe com um método set, pra isso

Melhor você postar a exceção por completo, assim podemos ir direto no arquivo e linha de erro…

Tenta instanciar o ViewIndexerInitialProtocol antes (new ViewIndexerInitialProtocol())
Torne esse objeto static e veja o que acontece.

Obrigado pela resposta de todos, mas resolvi com algo bem simples. Minha tela primária que abre a tela secundária vai passar o parâmetro da própria tela. Para isso, criei um método na tela secundária para recebê-lo:

public void receiveJFrameInitialProtocol(InitialProtocol frame) {
this.signalClose = frame;
}

Na tela de envio, fica assim:
public void sendJFrameThis() {
viewIndexerInitialProtocol.receiveJFrameInitialProtocol(this); //E aqui é repassado a instância.
}

Funcionou perfeito. Espero que ajude alguém. Peace.