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)