Error Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException [migrated]
- by user134212
I'm new here.
I'm learning how to program on java and I have a problem with my code.
I really have no clue why my code is not working.
I think my mistake may be here, but I'm not quite sure.
m3 = new Matriz(ren2,col2);
btSumar.addActionListener(new ActionListener()
{
Matriz m3;//(ren2,col2);
public void actionPerformed(ActionEvent e)
{
m3 = new Matriz(ren2,col2);
if(ventanaAbierta==true)
{
try
{
crearMat.SUMA(m1,m2);
}
catch(Exception nul)
{
System.out.println(nul);
}
}
else
{
JOptionPane.showMessageDialog(null,"Ya se realizo la suma");
}
}
});
My Complete code
import java.awt.*;
import javax.swing.*;
import javax.swing.BorderFactory;
import javax.swing.border.Border;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.util.*;
public class Practica2
{
private int opcion,ren2,col2;
private JFrame ventana,ventanaPrintMatriz;
private JPanel panel,panel2;
private Border borderRed2,borderBlue2,borderGreen2,borderGreen4;
private Color red,green,blue,white,black;
private Font Verdana14,ArialBlack18;
private JLabel labelTitulo;
public JButton btSalir,btSumar,btRestar,btMultiplica,btTranspuesta,btCrear;
private ImageIcon suma,resta,multi,crear,salir,trans;
private boolean ventanaAbierta = false;
private static ValidacionesMatrices valida;
private static Operaciones operacion;
private static Matriz m1,m2,m3;
private static ImprimirMatriz printMat;
public Practica2()
{
panel = new JPanel();
panel.setLayout(null);
ventana = new JFrame("Operaciones con Matrices");
ventana.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
ventana.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
//Sale del programa
System.exit(0);
}
});
ventana.setContentPane(panel);
ventana.setVisible(true);
ventana.setResizable(false);
ventana.setBounds(150,150,300,380);
//ventana.setBounds(0,0,650,650);
}
public void inicializarComponentes()
{
panel2 = new JPanel();
panel2.setLayout(null);
labelTitulo = new JLabel("Practica #2");
suma = new ImageIcon("suma1.png");
resta = new ImageIcon("resta1.png");
multi = new ImageIcon("multi1.png");
trans = new ImageIcon("trans2.png");
crear = new ImageIcon("crear1.png");
salir = new ImageIcon("salir1.png");
btTranspuesta = new JButton("Transpuesta",trans);
btMultiplica = new JButton("Multiplica",multi);
btRestar = new JButton("Restar",resta);
btSumar = new JButton("Sumar",suma);
btCrear = new JButton("Crear",crear);
btSalir = new JButton("Salir",salir);
//Tipo de letra
ArialBlack18 = new Font("Arial Black",Font.BOLD,18);
//Color
green = new Color(0,255,0);
//Formato labelTitulo
labelTitulo.setBounds(80,-60,200,150);
labelTitulo.setFont(ArialBlack18);
labelTitulo.setForeground(blue);
labelTitulo.setVisible(true);
//Formato de CrearMatriz
btCrear.setBounds(80,50,130,30);
btCrear.setToolTipText("Crea una matriz");
//Formato de Muliplica
btMultiplica.setBounds(80,100,130,30);
btMultiplica.setToolTipText("Mat[A] * Mat[B]");
//Formato de botonRestar
btRestar.setBounds(80,150,130,30);
btRestar.setToolTipText("Mat[A] - Mat[B]");
//Formato del botonSumar
btSumar.setBounds(80,200,130,30);
btSumar.setToolTipText("Mat[A] + Mat[B]");
//Formato de Transpuesta
btTranspuesta.setBounds(80,250,130,30);
btTranspuesta.setToolTipText("Mat[A]^-1");
//Formato del botonSalir
btSalir.setBounds(80,300,130,30);
//Agregando componentes al panel1
panel2.add(labelTitulo);
panel2.add(btMultiplica);
panel2.add(btCrear);
panel2.add(btRestar);
panel2.add(btSumar);
panel2.add(btSalir);
panel2.add(btTranspuesta);
//Formato panel2
panel2.setBackground(green);
panel2.setVisible(true);
panel2.setBounds(0,0,300,380);
//Argregamos componentes al panelPrincipal=
panel.add(panel2);
//BotonCrear
btCrear.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) //throws IOException
{
if(ventanaAbierta==false)
{
ventanaAbierta=true;
new CrearMatriz();
}
else
{
JOptionPane.showMessageDialog(null,"Ya se crearon las Matrices");
}
}
});
m3 = new Matriz(ren2,col2);
btSumar.addActionListener(new ActionListener()
{
Matriz m3;//(ren2,col2);
public void actionPerformed(ActionEvent e)
{
m3 = new Matriz(ren2,col2);
if(ventanaAbierta==true)
{
try
{
crearMat.SUMA(m1,m2);
}
catch(Exception nul)
{
System.out.println(nul);
}
}
else
{
JOptionPane.showMessageDialog(null,"Ya se realizo la suma");
}
}
});
//BotonSalir
btSalir.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
panel.setVisible(true);
panel.setBounds(0,0,350,380);
}
class VentanaMatriz
{
private JFrame ventana;
private JPanel panel;
private JTextArea textArea1,textArea2;
private JLabel mat1,mat2;
private JTextField textField1;
public VentanaMatriz()
{
panel = new JPanel();
panel.setLayout(null);
ventana = new JFrame("Creacion de Matrices");
ventana.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
ventana.dispose();
}
});
ventana.setContentPane(panel);
ventana.setVisible(true);
ventana.setResizable(false);
ventana.setBounds(200,100,850,420);
}
public void inicializarComponentes()
{
//Colores
black = new Color(0,0,0);
white = new Color(255,255,255);
blue = new Color(0,0,255);
green = new Color(0,255,0);
red = new Color(255,0,0);
//Tipo de letra
Verdana14 = new Font("Verdana",Font.BOLD,14);
//Tipos de borde
borderRed2 = BorderFactory.createLineBorder(red,2);
borderBlue2 = BorderFactory.createLineBorder(blue,2);
borderGreen2 = BorderFactory.createLineBorder(green,2);
borderGreen4 = BorderFactory.createLineBorder(green,4);
//Agregando componentes al panel1
panel.add(mat1);
panel.add(textArea1);
panel.add(mat2);
panel.add(textArea2);
//Formato panel2
panel.setBackground(blue);
panel.setVisible(true);
panel.setBounds(0,0,850,420);
}
}
class CrearMatriz
{
public int col1,re1,ren2,col2;
public Matriz m1,m2,m3;
public CrearMatriz()
{
int col1,ren1,ren2,col2;
ren2 = Integer.parseInt(JOptionPane.showInputDialog("Numero de Renglones Matriz A: "));
col2 = Integer.parseInt(JOptionPane.showInputDialog("Numero de Columnas Matriz A: "));
final Matriz m1= new Matriz(ren2,col2);
ren2 = Integer.parseInt(JOptionPane.showInputDialog("Numero de Renglones Matriz B: "));
col2 = Integer.parseInt(JOptionPane.showInputDialog("Numero de Columnas Matriz B: "));
final Matriz m2= new Matriz(ren2,col2);
m3 = new Matriz(ren2,col2);
m1.llenarMatriz();
m2.llenarMatriz();
m1.printMat();
m2.printMat();
}
public void SUMA(Matriz m1,Matriz m2)
{
Matriz m3;
if(ventanaAbierta==false)
{
m3 = new Matriz(ren2,col2);
if(valida.validaSumayResta(m1,m2))
{
m3 = operacion.sumaMat(m1,m2);
JOptionPane.showMessageDialog(null,"La suma es = ");
m3.imprimeMatriz();
}
else
{
JOptionPane.showMessageDialog(null,"No es posible hacer la suma");
}
}
}
public void RESTA()
{
}
//btSumar = new JButton("Sumar",suma);
//BotonSumar
//Mostrar matriz 1 y 2
// System.out.println("\n\n\nMatriz 1=");
// m1.imprimeMatriz();
// System.out.println("\nMatriz 2=");
//Poner en botones
/*
if(valida.validaSumayResta(m1,m2))
{
m3 = operacion.sumaMat(m1,m2);
JOptionPane.showMessageDialog(null,"La suma es = ");
m3.imprimeMatriz();
}
else
{
JOptionPane.showMessageDialog(null,"No es posible hacer la suma");
}
if(valida.validaSumayResta(m1,m2))
{
m3=operacion.restaMat(m1,m2);
JOptionPane.showMessageDialog(null,"La resta es = ");
m3.imprimeMatriz();
}
else
{
JOptionPane.showMessageDialog(null,"No es posible hacer la resta");
}
if(valida.validaMultiplicacion(m1,m2)){
m3=operacion.multiplicaMat(m1,m2);
JOptionPane.showMessageDialog(null,"La multiplicacion es = ");
m3.imprimeMatriz();
}
else
{
JOptionPane.showMessageDialog(null,"No es posible hacer la multiplicacion");
}
JOptionPane.showMessageDialog(null,"La multiplicacion es = ");
m1=operacion.transpuesta(m1);
m2=operacion.transpuesta(m2);
*/
}
class Matriz
{
public JTextField matriz;
//public JTextArea texto;
private JFrame ventanaPrintMatriz;
private JPanel panel2;
int ren;
int col;
int pos[][];
public Matriz(int ren1, int col1)
{
ren = ren1;
col = col1;
pos = new int [ren][col];/*una matriz de enteros de renglon por columan*/
}
public void llenarMatriz()
{
for(int i=0;i<ren;i++)
for(int j=0;j<col;j++)
pos[i][j]=(int) (Math.random()*10);/*la posicion i y j crea un entero random*/
}
/*vuelve a recorrer los espacio de i y j*/
}
//Esta clase era un metodo de CrearMatriz
class ImprimirMatriz
{
public void ImprimirMatriz()
{
panel2 = new JPanel();
panel2.setLayout(null);
ventanaPrintMatriz = new JFrame("Matriz");
ventana.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
//Practica2.ventanaAbierta=false;
ventana.dispose();
}
});
int i,j;
int x=0,y=0;
borderRed2 = BorderFactory.createLineBorder(red,2);
white = new Color(255,255,255);
red = new Color(255,0,0);
black = new Color(0,0,0);
blue = new Color(0,0,255);
for(i=0;i<ren;i++)
{
for(j=0;j<col;j++)
{
matriz = new JTextField(" "+pos[i][j]);
matriz.setBorder(borderRed2);
matriz.setForeground(white);
matriz.setBounds(x+25,y+25,25,25);
matriz.setBackground(black);
matriz.setEditable(false);
matriz.setVisible(true);
//Se incrementa la coordenada en X
//para el siguiente Textfield no se encime
x=x+35;
//Agregamos el textField al panel
panel2.add(matriz);
}
//Regreso las cordenadas de X a 0 para que el
//siguiente renglon empieze en donde mismo
x=0;
//Incremento las coordenada Y para que se brinque
//de linea
y=y+35;
}
//Formato panel2
panel2.setBounds(150,150,350,380);
panel2.setBackground(blue);
//panel2.setEditable(false);
panel2.setVisible(true);
//Formato de Ventana
ventanaPrintMatriz.setContentPane(panel2);
ventanaPrintMatriz.setBounds(150,150,350,380);
ventanaPrintMatriz.setResizable(false);
ventanaPrintMatriz.setVisible(true);
}
}
class Operaciones
{
public Matriz sumaMat(Matriz m1, Matriz m2)
{
Matriz m3;
m3 = new Matriz(m1.ren, m1.col);
for(int i=0;i<m1.col;i++)
for(int j=0;j<m1.ren;j++)
m3.pos[i][j]=m1.pos[i][j]+m2.pos[i][j];
return m3;
}
public Matriz restaMat(Matriz m1, Matriz m2)
{
Matriz m3;
m3 = new Matriz(m1.ren, m1.col);
for(int i=0;i<m1.col;i++)
for(int j=0;j<m1.ren;j++)
m3.pos[i][j]=m1.pos[i][j]-m2.pos[i][j];
return m3;
}
public Matriz multiplicaMat(Matriz m1, Matriz m2)
{
Matriz m3;
m3 = new Matriz(m1.ren, m2.col);
for(int i=0;i<m1.ren;i++)
for(int j=0;j<m2.col;j++)
{
m3.pos[i][j]=0;
for(int k=0;k<m1.col;k++)
m3.pos[i][j]+=(m1.pos[i][k]*m2.pos[k][j]);
}
return m3;
}
public Matriz transpuesta(Matriz m1)
{
Matriz m3=new Matriz(m1.col,m1.ren);
for(int i=0;i<m1.col;i++)
for(int j=0;j<m1.ren;j++)
m3.pos[i][j]=m1.pos[j][i];
return m3;
}
}
class ValidacionesMatrices
{
public boolean validaSumayResta(Matriz m1, Matriz m2)
{
if((m1.ren==m2.ren) && (m1.col==m2.col)) return true;
else return false;
}
public boolean validaMultiplicacion(Matriz m1, Matriz m2)
{
if(((m1.ren==m2.ren) && (m1.col==m2.col)) || (m1.col==m2.ren))
return true;
else
return false;
}
}
public static void main(String[] args)
{
Practica2 practica2 = new Practica2();
practica2.inicializarComponentes();
}
}
Exc