Java - Obtener un JTextField desde otra clase.

   
Vista:

Obtener un JTextField desde otra clase.

Publicado por ProSyth (1 intervención) el 22/09/2011 19:00:56
Hola a todos llevo desde una semana buscando como solucionar un problema, tengo una clase main la cual llama una ventanaPrincipal, esta crea la Ventana, posee un JTextField y un JButtón, hasta ahí todo bien, luego tengo otra clase y necesito obtener el JTextField, pero o me da NullPointer o cuando meto dentro la instancia me va creando otra ventana, y quiero que todo me ocurra en la misma como se puede hacer? Dejo el código

Main principal:
1
2
3
4
5
6
7
8
9
10
11
public class main {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		VentanaPrincipal vp = new VentanaPrincipal();
 
	}
 
}

Ventana Principal:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
 
 
public class VentanaPrincipal extends JFrame implements ActionListener{
	public JTextField txt;
	public OtraClase otcl;
	private JButton btn;
 
 
	public VentanaPrincipal(){ //Constructor
 
		super("Mi Ventana");
		this.setSize(300,200);
		configVentana(); //Llamada funci�n
		this.setLocationRelativeTo(null);
 
		this.setVisible(true);
	//	Otra = new OtraClase();
	}
	public void configVentana(){   //A�ado los botones
 
		this.setLayout(new FlowLayout());
		txt = new JTextField(20);
		btn = new JButton("Capturar");
		btn.addActionListener(this);
		this.add(txt);
		this.add(btn);
 
 
	}
	public String capturarTexto(){
		String miDato= txt.getText();
		return miDato;
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource()==btn) {
		    otcl.Captura();   // Aquí salta el error
		    System.out.println("Hola");
 
		}
	}
}

El error en prinipcio da aquí otcl.Captura(); al hacer la llamada pero si creo la instancia de OtraClase me salta cada vez que pulso el botón otra ventana y una de las cosas que quiero evitar.

OtraClase:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import javax.swing.JTextField;
 
 
public class OtraClase {
	public VentanaPrincipal vp;
	public JTextField txt;
 
 
 
	public OtraClase() {}
 
 
	public void Captura(){
 
 
		System.out.println(vp.capturarTexto());
 
		System.out.println("b");
	}
}


Como ven en esta última clase tengo System.out.println(vp.capturarTexto()); es para ver si captura o no el tengo, hace una llamada que está en la clase Ventanaprincipal

1
2
3
4
5
}
	public String capturarTexto(){
		String miDato= txt.getText();
		return miDato;
	}

Pero no coge como he dicho el dato el puntero a punto null, como se puede hacer, muchas gracias por adelantado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Obtener un JTextField desde otra clase.

Publicado por carlosF (2 intervenciones) el 25/10/2011 00:47:17
mmm, oye crees poder poner el error que te manda...

según lo que mencionas, pudiera ser el error al crear tu objeto de la segunda clase (OtraClase), tal vez no tenga nada que ver, pero sería bueno checarlo:

public OtraClase otcl = new OtraClase();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obtener un JTextField desde otra clase.

Publicado por Oscar (5 intervenciones) el 27/10/2011 21:47:40
El problema en este programa, es que no se pasaron las referencias necesarias.
Arreglalo de la siguiente forma:

1) Inicializa la variable global otcl pasando toda la clase ('VentanaPrincipal') como argumento, hacia la clase 'OtraClase', utilizando la instruccion 'this'.

1
2
3
4
5
6
7
8
9
public VentanaPrincipal() {
//Constructor
        super("Mi Ventana");
        this.setSize(300, 200);
        configVentana(); //Llamada funci�n
        this.setLocationRelativeTo(null);
        this.setVisible(true);
        otcl=new OtraClase(this);
// Otra = new OtraClase();


2) En la clase 'OtraClase', inicializa la variable 'vp' de la siguiente manera:

1
2
3
public OtraClase(VentanaPrincipal vp) {
    this.vp=vp;
    }


Nota si la notacion 'this.vp=vp' no te es familiar entonces utiliza:

1
2
3
public OtraClase(VentanaPrincipal vp1) {
    vp=vp1;
    }


Que es exactamente lo mismo.

Saludos y visita mi web http://txos.blogspot.com
otra web interesante: http://svarias.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar