SoloCodigo

Programación General => Java => Mensaje iniciado por: robbie110487 en Miércoles 5 de Abril de 2006, 00:21

Título: Exception Nullpointerexception
Publicado por: robbie110487 en Miércoles 5 de Abril de 2006, 00:21
Hola, estoy empezando un poco con java he estudiado lo basico en modo consola y estoy empezando con GUI, en el libro que estoy siguiendo viene como ejercicio propuesto realizar un programa que sume dos numeros, me he atorado en algo sencillo pero no encuentro la respuesta, ya que al dar click en el boton sumar me manda la excepcion NullPointerException y no puedo solucionarlo, tambien quisiera que las JTextField acepten solo numeros, el codigo es el siguiente:

Código: Text
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4.  
  5. public class suma extends JFrame
  6. {
  7.   public suma()
  8.   {
  9.     setSize(350,200);
  10.     setTitle("Programa que suma dos numeros");
  11.     setResizable(false);
  12.     setVisible(true);
  13.     setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  14.     iniciar();
  15.   }
  16.   private void iniciar()
  17.   {
  18.     JLabel instrucciones=new JLabel();
  19.     JLabel num1=new JLabel();
  20.     JLabel num2=new JLabel();
  21.     JLabel lblresultado=new JLabel();
  22.     JTextField txtnum1=new JTextField();
  23.     JTextField txtnum2=new JTextField();
  24.     JButton sumar=new JButton();
  25.     JButton salir=new JButton();
  26.     Container c=getContentPane();
  27.     c.setLayout(null);
  28.     instrucciones.setText("Escribe dos numeros y luego presiona el boton sumar.");
  29.     c.add(instrucciones);
  30.     instrucciones.setBounds(10,10,320,14);
  31.     c.add(num1);
  32.     num1.setText("Escribe el primer numero:");
  33.     num1.setBounds(10,50,200,14);
  34.     c.add(num2);
  35.     num2.setText("Escribe el segundo numero:");
  36.     num2.setBounds(10,80,200,14);
  37.     c.add(txtnum1);
  38.     txtnum1.setBounds(180,50,150,18);    
  39.     c.add(txtnum2);
  40.     txtnum2.setBounds(180,80,150,18);
  41.     salir.setText("Salir");
  42.     salir.setMnemonic('S');
  43.     c.add(salir);
  44.     salir.setBounds(248,120,80,18);
  45.     salir.addActionListener(new ActionListener()
  46.     {
  47.       public void actionPerformed(ActionEvent a)
  48.       {
  49.         System.exit(0);
  50.       }
  51.     });
  52.     sumar.setText("Sumar");
  53.     sumar.setMnemonic('u');
  54.     c.add(sumar);
  55.     sumar.setBounds(150,120,80,18);
  56.     sumar.addActionListener(new ActionListener()
  57.     {
  58.       public void actionPerformed(ActionEvent r)
  59.       {
  60.         accionDeSumar(r);
  61.       }
  62.     });
  63.     c.add(lblresultado);
  64.     lblresultado.setBounds(10,150,50,14);
  65.    
  66.   }
  67.   public void accionDeSumar(ActionEvent r)
  68.   {    
  69.     try
  70.     {
  71.     int numero1=Integer.parseInt(txtnum1.getText());
  72.     int numero2=Integer.parseInt(txtnum2.getText());
  73.     int resultado=numero1+numero2;
  74.     JOptionPane.showMessageDialog(null,
  75.                     "El resultado es "+resultado,
  76.                     "Suma",
  77.                     JOptionPane.PLAIN_MESSAGE);
  78.     }
  79.     catch(Exception e)
  80.     {
  81.       System.out.println(e);
  82.     }
  83.   }
  84.  
  85.   public static void main(String args[])
  86.   {
  87.     new suma();
  88.   }
  89.   private JTextField txtnum1;
  90.   private JTextField txtnum2;
  91.   private JLabel lblresultado;
  92. }
  93.  

 :hola:
Título: Re: Exception Nullpointerexception
Publicado por: RiLaRos en Miércoles 5 de Abril de 2006, 05:43
Pues tu error esta en la doble declaracion de los JTextFields, ya que en un principio los declaras como private, luego los vuelves a declarar.

tu nuevo codigo seria este:

Código: Text
  1.  
  2. import javax.swing.*;
  3. import java.awt.*;
  4. import java.awt.event.*;
  5.  
  6. public class suma extends JFrame
  7. {
  8.   public suma()
  9.   {
  10.     setSize(350,200);
  11.     setTitle("Programa que suma dos numeros");
  12.     setResizable(false);
  13.     setVisible(true);
  14.     setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  15.     iniciar();
  16.   }
  17.   private void iniciar()
  18.   {
  19.     JLabel instrucciones=new JLabel();
  20.     JLabel num1=new JLabel();
  21.     JLabel num2=new JLabel();
  22.     JLabel lblresultado=new JLabel();
  23.     txtnum1=new JTextField();
  24.     txtnum2=new JTextField();
  25.     JButton sumar=new JButton();
  26.     JButton salir=new JButton();
  27.     Container c=getContentPane();
  28.     c.setLayout(null);
  29.     instrucciones.setText("Escribe dos numeros y luego presiona el boton sumar.");
  30.     c.add(instrucciones);
  31.     instrucciones.setBounds(10,10,320,14);
  32.     c.add(num1);
  33.     num1.setText("Escribe el primer numero:");
  34.     num1.setBounds(10,50,200,14);
  35.     c.add(num2);
  36.     num2.setText("Escribe el segundo numero:");
  37.     num2.setBounds(10,80,200,14);
  38.     c.add(txtnum1);
  39.     txtnum1.setBounds(180,50,150,18);    
  40.     c.add(txtnum2);
  41.     txtnum2.setBounds(180,80,150,18);
  42.     salir.setText("Salir");
  43.     salir.setMnemonic('S');
  44.     c.add(salir);
  45.     salir.setBounds(248,120,80,18);
  46.     salir.addActionListener(new ActionListener()
  47.     {
  48.       public void actionPerformed(ActionEvent a)
  49.       {
  50.         System.exit(0);
  51.       }
  52.     });
  53.     sumar.setText("Sumar");
  54.     sumar.setMnemonic('u');
  55.     c.add(sumar);
  56.     sumar.setBounds(150,120,80,18);
  57.     sumar.addActionListener(new ActionListener()
  58.     {
  59.       public void actionPerformed(ActionEvent r)
  60.       {
  61.         accionDeSumar(r);
  62.       }
  63.     });
  64.     c.add(lblresultado);
  65.     lblresultado.setBounds(10,150,50,14);
  66.    
  67.   }
  68.   public void accionDeSumar(ActionEvent r)
  69.   {    
  70.     try
  71.     {
  72.     int numero1=Integer.parseInt(txtnum1.getText());
  73.     int numero2=Integer.parseInt(txtnum2.getText());
  74.     int resultado=numero1+numero2;
  75.     JOptionPane.showMessageDialog(null,"El resultado es "+resultado,"Suma",JOptionPane.PLAIN_MESSAGE);
  76.     }
  77.     catch(Exception e)
  78.     {
  79.       System.out.println(e);
  80.     }
  81.   }
  82.  
  83.   public static void main(String args[])
  84.   {
  85.     new suma();
  86.   }
  87.   private JTextField txtnum1;
  88.   private JTextField txtnum2;
  89.   private JLabel lblresultado;
  90. }
  91.  

Este funciona perfectamente.

Salu2... :kicking:
Título: Re: Exception Nullpointerexception
Publicado por: robbie110487 en Miércoles 5 de Abril de 2006, 22:48
Muchas gracias, funciono muy bien, vaya descuido jaja incluso asi venia en los ejemplos y no lo note jaja, aprendere a examinar mejor el codigo.

un saludo  :hola: