Dificultades con la captura de dato desde TextField ?

diogenes
22 de Noviembre del 2002

Tengo el siguiente objetivo en mente poder capturar un dato a traves de un campo de texto (TextField), para ello he definido lo que paso a mostrar a continuacion y que solo es parte del programa, y donde a partir del evento de activacion del boton pretendo capturar el texto del campo y llevarlo a una variable pero cuando lo ejecuto con el appletviewer me sale un largo comentario de error que dice asi.

==
Exception ocurred during event dispatching;
java.lang.NullPointerException:

at SoLong.action(Solong.java:126)
at java.awt.Component.handleEvent(Component.java, Compiled Code)

==

y que continua con una descripcion parecida a las ultima linea en las proximas lineas..


Este es parte del programa, donde he procurado colocar solamente el codigo que interviene en el problema

==
import java.awt.*;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.FontMetrics;

public class SoLong extends java.applet.Applet {


Button Buttonokb,open,close;
Font tit = new Font("Courier", Font.BOLD, 18);
Font nor = new Font("Arial", Font.PLAIN, 10);
String lolo;
TextField tfname;

void buildConstraints(GridBagConstraints gbc, int gx, int gy,
int gw, int gh, int wx, int wy) {
gbc.gridx = gx;
gbc.gridy = gy;
gbc.gridwidth = gw;
gbc.gridheight = gh;
gbc.weightx = wx;
gbc.weighty = wy;

}

public void init() {

GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints constraints = new GridBagConstraints();
setLayout(gridbag);

//campo de texto de nombre
buildConstraints(constraints, 1, 1, 1, 1, 0, 0);
constraints.fill = GridBagConstraints.HORIZONTAL;
TextField tfname = new TextField(20);
gridbag.setConstraints(tfname, constraints);
add(tfname);

//boton OK
buildConstraints(constraints, 0, 3, 3, 1, 0, 15);
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.CENTER;
Buttonokb = new Button(" Aceptar ");
gridbag.setConstraints(Buttonokb, constraints);
add(Buttonokb);

public boolean action(Event evt, Object arg) {
if (evt.target instanceof Button) {
lolo = tfname.getText();
System.out.println(lolo);
return true;
}
return false;
}


}


William Lopera
22 de Noviembre del 2002
El problema es que tienes dos objetos con el mismo nombre:
En la declaración:
TextField tfname; //(cuyo instancia es nula)
En el método init:
TextField tfname = new TextField(20);
Finalmente cuando llamas al objeto tfname en:
lolo = tfname.getText();
=> este hace referencia al objeto global, cuya instancia es nula...!!!
por ello se genera el error:
Exception ocurred during event dispatching;
java.lang.NullPointerException:

Oswaldo
22 de Noviembre del 2002
Hola. Creo que tienes un atributo duplicado.
TextField tfname lo tienes como variable de clase, y tambien lo tienes definido en el metodo init.
Creo que por ahi puede estar el problema