Capturar Automáticamente Datos JTextfield

Iniciado por ZedGe, 25 Noviembre 2011, 19:26 PM

0 Miembros y 1 Visitante están viendo este tema.

ZedGe

Alguien que me pueda ayudar con esta idea...

Lo que quiero es tener una clase cualquiera..... que tenga la variable datos y un jtextfield.. quiero que se capture automáticamente 'lo que se ingrese a ese textfield y poder usarlo dentro de la clase


public class prueba() {
......
String datos;
.......
Texto1 = new JTextField( 30 );
        Texto1.setBounds(250,50,500,50);
        add(Texto1 );

}



LO que tengo es esto

public class prueba() {
......
String datos;
.......
Texto1 = new JTextField( 30 );
        Texto1.setBounds(250,50,500,50);
        add(Texto1 );

Texto1.addKeyListener(new KeyAdapter() {

             public void keyTyped(KeyEvent e) {
              char caracter = e.getKeyChar();     
              datos=datos + caracter;
             }
         });

System.out.println(datos);
}


en char creo que se guardan las variables.... y quiero sacar todo los datos que se escriben automáticamente en datos, pero no lo logro por que como que se borran las teclas ya que con ese System deberia ir viendo que sale pero no sale nada.....

Tambien tengo pensado que si se ingresan 13 datos cerrar eso y guardarlo todo en datos... pero tampoco se como

RyogiShiki

#1
Mira esta clase, cambia e enfoque totalmente usando DocumentListeners:

MainFrame.java
Código (java) [Seleccionar]

package edu.probes.java;

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

public class MainFrame extends JFrame implements DocumentListener {

private JTextField text = new JTextField(20);
private String textInJTextField;

public MainFrame() {
text.getDocument().addDocumentListener(this);

this.add(text, BorderLayout.NORTH);
               this.setSize(500, 100);

}

@Override
public void insertUpdate(DocumentEvent e) {
textInJTextField = text.getText();
print(textInJTextField);

}

@Override
public void removeUpdate(DocumentEvent e) {
textInJTextField = text.getText();
print(textInJTextField);

}

@Override
public void changedUpdate(DocumentEvent e) {
}

public void print(String s) {
System.out.println(s);
}
}


MainApp.java
Código (java) [Seleccionar]

package edu.probes.java;

public class MainApp {
public static void main(String args[]) {
MainFrame fm = new MainFrame();
fm.setVisible(true);
}

}


Saludos


ZedGe

No es lo que quería...... pero hice unas modificaciones y me sirvió de lujo :P


en realidad borre lo que tenia y según lo que mandaste cambiare los planes :P




Gracias Te Pasaste...



Si puedes de todas formas ayudarme en esto hipotéticamente.....

si hago un String cosa; dentro de la clase MainFrame
y pongo un cosa = s; en la funcion print... por que al poner un system dentro del public MianFrame no imprime nada?


RyogiShiki

Pues como verás la función:

Código (java) [Seleccionar]
public MainFrame ()

Es un constructor, y los constructores solo se ejecutan un vez, a la hora de crear el objeto. Por eso no sale.


ZedGe

Así es pero pedía la forma de hacer eso "virtualmente" , pero se me ocurrio una idea xD




Gracias por tu código me será de mucha ayuda

RyogiShiki

Bien me alegra que te haya servido.

Saludos