Enviar informações para o próximo JFrame

Olá galera, meu aplicativo tem 3 telas e gostaria que a partir da imagem escolhida na Tela1 e Tela2 criasse a Tela3 com tais imagens escolhidas, consigo que a Tela2 envie a imagem para a Tela3, entretanto no lugar da imagem da Tela1 fica em branco e dá erro. OBS.: a tela3 está como variavel pública, pois achei necessário que todas as telas tivesse acesso a esta variável.

Tela1

`
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;

import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;

import java.io.*;
import java.net.Socket;

public class Tela1 extends JFrame {
JLabel ifla;
public JLabel ivas,texto;
public JRadioButton rfla, rflu, rvas, rbot;
private ButtonGroup grupo1;
public boolean radio, radio2;
int f, v;
public Tela3 tela3;

public Tela1() {
super(“Times de Futebol”);
setLayout(null);
setExtendedState( MAXIMIZED_BOTH );
texto = new JLabel(“Qual é o melhor?”);
texto.setBounds(650, 0, 100, 100 );
add(texto);

    Icon fla = new ImageIcon("fla.png");
    ifla = new JLabel(fla);
    ifla.setBounds(300, 80, 300, 300 );
    add(ifla);

    Icon vas = new ImageIcon("vas.png");
    ivas = new JLabel(vas);
    ivas.setBounds(700, 80, 300, 300 );
    add(ivas);

    rfla = new JRadioButton("Flamengo", false);
    rvas = new JRadioButton("Vasco", false);
    rfla.setBounds(400, 370, 100, 100);
    rvas.setBounds(800, 370, 100, 100 );
    add(rfla);
    add(rvas);

    grupo1 = new ButtonGroup();
    grupo1.add(rfla);
    grupo1.add(rvas);

         
    
    rfla.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            Tela2 tela = new Tela2();
            tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            tela.setVisible(true);
            dispose();
            
           
            radio = rfla.isSelected();
            if(radio==true){f = +1;
            System.out.println("Flamengo ="+f);
            }
         // Aqui envia as informações para serem expostas na Tela3                                
            ifla.setBounds(300, 80, 300, 300 );
           tela3.add (ifla);
           tela3.add (rfla);             }
    });
    rvas.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            Tela2 tela = new Tela2();
            tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            tela.setVisible(true);
            dispose();
            
            radio2 = rvas.isSelected();
            if(radio2==true){v = +1;
            System.out.println("Vasco ="+v);
            }

            
        }
    });
    
      }

}

`

Tela2

`import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;

public class Tela2 extends JFrame {
public JLabel iflu,ibot,texto;
public JRadioButton rflu,rbot, rflu2;
private ButtonGroup grupo2;
public boolean radio3, radio4, radio5;
int b,fl, fl2, flures;
public Tela3 tela3;

public Tela2() {
	
	super("Times de Futebol 2");
    setLayout(null);
    setExtendedState( MAXIMIZED_BOTH );
    texto = new JLabel("Qual é o melhor?");
    texto.setBounds(650, 0, 100, 100 );
    add(texto);

    Icon imflu = new ImageIcon("flu.png");
    iflu= new JLabel(imflu);
    iflu.setBounds(300, 80, 300, 300 );
    add(iflu);

    Icon bot = new ImageIcon("bot.png");
    ibot = new JLabel(bot);
    ibot.setBounds(700, 80, 300, 300 );
    add(ibot);

    rflu = new JRadioButton("Fluminense", false);
    rbot = new JRadioButton("Botafogo", false);
    rflu.setBounds(400, 370, 100, 100);
    rbot.setBounds(800, 370, 100, 100 );
    add(rflu);
    add(rbot);

    grupo2 = new ButtonGroup();
    grupo2.add(rflu);
    grupo2.add(rbot);
    rflu.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            Tela3 tela = new Tela3();
            tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            tela.setVisible(true);
            dispose();
            
            radio3 = rflu.isSelected();
            if(radio3==true){fl = +1;
            }
            texto.setBounds(650, 0, 100, 100 );
            iflu.setBounds(700, 80, 300, 300 );
            rflu2 = new JRadioButton ("Fluminense", false);
            rflu2.setBounds(800, 370, 100, 100 );
            tela.add (rflu2);
            tela.add(texto);
            tela.add (iflu);
            
            rflu2.addActionListener(new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent arg0) {
            radio5 = rflu2.isSelected();
            if(radio5==true){fl2 = +1;
            flures = fl + fl2;
            System.out.println("Fluminense ="+flures);
            }
          
                }
                
            });
                            
            }            
         
    });

   
    rbot.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
           // aqui envia informações para a Tela3
            tela3.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            tela3.setVisible(true);
            dispose();
            texto.setBounds(650, 0, 100, 100 );
            ibot.setBounds(700, 80, 300, 300 );
            rbot = new JRadioButton ("Botafogo", false);
            rbot.setBounds(800, 370, 100, 100 );
            tela3.add (rbot);
            tela3.add(texto);
            tela3.add (ibot);
            tela3.add (rbot);
            
            radio4 = rbot.isSelected();
            
            
            
        }
    });
    
      }

}`

Tela3

`import javax.swing.;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Tela3 extends JFrame{
private JLabel ifla;
public JRadioButton rflu,rbot;
public boolean radio3;
int fl2;
public Tela3(){
super(“Times de Futebol 3”);
setLayout( null );
setExtendedState( MAXIMIZED_BOTH );

	}

}`

ERRO retornado ao executar a aplicação:

Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at Tela1$1.actionPerformed(Tela1.java:74)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.JToggleButton$ToggleButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)