线程错误异常" AWT-EventQueue-0"显示java.lang.NullPointerException

时间:2014-06-01 23:23:13

标签: java swing user-interface nullpointerexception

我是新来的。

我正在学习如何使用java进行编程,而且我的代码存在问题。

我真的不知道为什么我的代码无效。

screen shot of error

我认为我的错误可能在这里,但我不太确定。

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");                        

            }
        }
    });

我的完整代码

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

0 个答案:

没有答案