Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Problemas con el codigo

Estas en el tema de Problemas con el codigo en el foro de Java en Foros del Web. Hola, Tengo que siguiente código, en principio no se porque me da error, me muestra error en la línea: intNumero.addActionListener(manejador); Me muestra el siguiente error: ...
  #1 (permalink)  
Antiguo 15/09/2015, 13:50
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 10 meses
Puntos: 0
Problemas con el codigo

Hola,

Tengo que siguiente código, en principio no se porque me da error, me muestra error en la línea:

intNumero.addActionListener(manejador);

Me muestra el siguiente error:

run:
Exception in thread "main" java.lang.NullPointerException
at adivine.el.nuemero.AdivineClass.<init>(AdivineClas s.java:36)
at adivine.el.nuemero.AdivineElNuemero.main(AdivineEl Nuemero.java:21)
Java Result: 1
BUILD SUCCESSFUL (total time: 2 seconds)



El código es el siguiente ¿Cuál es el fallo?

Código Java:
Ver original
  1. import com.sun.prism.paint.Color;
  2. import java.awt.BorderLayout;
  3. import java.awt.FlowLayout;
  4. import java.awt.*;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7. import javax.swing.JFrame;
  8. import javax.swing.JLabel;
  9. import javax.swing.JPanel;
  10. import javax.swing.JTextField;
  11.  
  12. /**
  13.  *
  14.  * @author Administrador
  15.  */
  16. public class AdivineClass extends JFrame
  17. {
  18.     private JLabel cabecera, adivina, juego;
  19.     private JTextField intNumero;
  20.     int aleatorio = (int) (Math.random()*1000+1);
  21.     private JPanel panel;
  22.    
  23.     public AdivineClass()
  24.     {
  25.         super("Adivine el número");
  26.         setLayout(null);
  27.        
  28.  
  29. ManejadorCampo manejador = new ManejadorCampo();
  30.         intNumero.addActionListener(manejador);
  31.        
  32.  
  33.  
  34.        
  35.         //Creamos el primer JLabel
  36.         cabecera = new JLabel("Inserte el número a adivinar:");
  37.         cabecera.setBounds(120, 50, 200, 40);
  38.         add(cabecera);
  39.        
  40.         //Creamos el segundo JLabel
  41.         juego = new JLabel("Tengo un número entro 1 y 1000. ¿Puéde usted adivinarlo?");
  42.         juego.setBounds(100, 1, 600, 100);
  43.         add(juego);
  44.        
  45.         //Creamos el Text Field
  46.         intNumero = new JTextField("");
  47.         intNumero.setBounds(300,60,100,20);
  48.         add(intNumero);
  49.     }
  50.    
  51.                 //Creamos la clase abstracta
  52.              private class ManejadorCampo implements ActionListener
  53.             {
  54.                 public void actionPerformed(ActionEvent evento)
  55.                 {
  56.                     if(evento.getSource()==intNumero)
  57.                     {
  58.                         //Hasta aqui llegamos
  59.                     }
  60.                 }
  61.              }
  62. }
  #2 (permalink)  
Antiguo 16/09/2015, 05:49
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Problemas con el codigo

Buenas,

Te da error porque el objeto intNumero no esta todavia inicializado cuando intentas asignarle el listener.

Una posible solucion seria aniadir el manejador en el momento en el que creas el JTextField

Código Java:
Ver original
  1. //Creamos el Text Field
  2. intNumero = new JTextField("");
  3. intNumero.setBounds(300,60,100,20);
  4.  
  5. ManejadorCampo manejador = new ManejadorCampo();
  6. intNumero.addActionListener(manejador);
  7.  
  8. add(intNumero);

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 16/09/2015, 06:20
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Problemas con el codigo

Así es, intente hacerlo antes que se creara, estoy aprendiendo como puedes ver, muchas gracias has sido de gran ayuda.

Etiquetas: clase, jframe
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:56.