codice:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at PannelloLista.actionPerformed(PannelloLista.java:51)
    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:6038)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
    at java.awt.Component.processEvent(Component.java:5803)
    at java.awt.Container.processEvent(Container.java:2058)
    at java.awt.Component.dispatchEventImpl(Component.java:4410)
    at java.awt.Container.dispatchEventImpl(Container.java:2116)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    at java.awt.Container.dispatchEventImpl(Container.java:2102)
    at java.awt.Window.dispatchEventImpl(Window.java:2429)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Perchè non "vede" gli oggetti nella riga 51 di PannelloLista?
Qualcuno sa spiegarmelo?
GRAZIE MILLE!

codice:
public class PannelloLista extends JPanel implements ActionListener {
    private JTextField txt1;
    private JList lista;
    private JButton b;
    private JLabel txt2;
    private PanSocieta riferimento;
    private FinestraLista RIFERIMENTO;
    

    public PannelloLista(PanSocieta chiamante, FinestraLista CHIAMANTE) {
        super();
        
        setBackground(new Color(102,255,102));
        
        RIFERIMENTO = CHIAMANTE;
        riferimento = chiamante;
        
        txt1 = new JTextField("Lista dei clienti inseriti");
        txt1.setEditable(false);
        txt2 = new JLabel("Premere OK per chiudere la finestra");
        
        int lunghezza = riferimento.CLIENTI.length();
        String[] clienti = new String[lunghezza];
        clienti = riferimento.gc.getNomiClienti(riferimento.CLIENTI);
        lista = new JList(clienti);
        
        b = new JButton("  OK  ");
        b.addActionListener(this);
        
        add(txt1);
        add(lista);
        add(txt2);
        add(b);
    }
    
    public void actionPerformed(ActionEvent e) {
        RIFERIMENTO.nascondiFinestra(riferimento.fl);   //RIGA 51
    }
}
codice:
public class PanSocieta extends JPanel implements ActionListener {
    
    protected JTextField t1, t2, t3, t4, t5;
    protected JLabel j1, j2, j3, j4, j5;
    protected JButton b1, b2;
    protected FinestraLista RIFERIMENTO;
    protected GestioneClienti gc;
    public ListNode CLIENTI;
    public ClienteSocieta c;
    public FinestraLista fl;

    public PanSocieta(ListNode CLIENTI) {
        super();
        
        this.CLIENTI = CLIENTI;


         ..............................................................................
        
    }
    
    public void actionPerformed(ActionEvent e) {
        
        if (e.getSource()==b1) {
                                           .....................................            
                        
            FinestraLista fl = new FinestraLista("Lista clienti"); // Farla aprire da menù
            Container cont = fl.getContentPane();
            PannelloLista pl = new PannelloLista(this, this.RIFERIMENTO);
            cont.add(pl);
            fl.setVisible(true);
        }
        
        else {
                         .............................            
            
            
            FinestraLista fl = new FinestraLista("Lista clienti");
            Container cont = fl.getContentPane();
            PannelloLista pl = new PannelloLista(this, this.RIFERIMENTO);
            cont.add(pl);
            fl.setVisible(true);
        }
            
    }
}
codice:
public class FinestraLista extends JFrame {

    public FinestraLista(String titolo) {
        super(titolo);
        
        setBounds(150,150, 230,200);
    }
    
    public void nascondiFinestra(FinestraLista f) {
        f.setVisible(false);
    }
}