style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Obtener datos de un TextField

Hola amigos, estoy haciendo un programa de red desde cero con codigo, y tengo problemasal obtener datos del JTextField:

Esta es la clase principal:::::::

package Interface;

import javax.swing.*;

/**
 * Created by Ingeniero on 10/01/2016.
 */

public class Principal extends JFrame {
   
    public Principal() {
        Panel p1 = new Panel();
        p1.setLocation(0,0);

        p1.bInicia1().addActionListener(new Evento(this));
        p1.bDetiene1().addActionListener(new Evento(this));

        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setTitle("Crear red Wifi, compartir internet y archivos con DAR WIFI");
        this.setSize(500, 500);
        this.setLocationRelativeTo(null);
        this.setVisible(true);
        this.add(p1);
     
    }

    public static void main(String[] args) {
        new Principal();

    }
}

ESte es panel donde esta la caja de texto y el boton:

package Interface;

import javax.swing.*;
import java.awt.*;

/**
 * Created by Ingeniero on 10/01/2016.
 */

public class Panel extends JPanel {

    protected JTextField usuario;
    protected JPasswordField contrase;
    protected JLabel lusuario;
    protected JLabel lcontrase;
    protected JButton bInicia;
    protected JButton bDetiene;

    public Panel() {
        setLayout(null);

        usuario = new JTextField("");
        usuario.setBounds(110,20,120,20);
        contrase = new JPasswordField("");
        contrase.setBounds(110,50,120,20);

        lusuario = new JLabel("Nombre de Red:");
        lusuario.setBounds(5,20,100,20);
        lcontrase = new JLabel("Contraseña:");
        lcontrase.setBounds(5,50,100,20);

        bInicia = new JButton("Iniciar");
        bInicia.setBounds(250,20,100,50);
        bInicia.setActionCommand("bInicia");
        bDetiene = new JButton("Detener");
        bDetiene.setBounds(370,20,100,50);
        bDetiene.setActionCommand("bDetiene");

        this.setSize(500, 500);
        this.setBackground(Color.green);
        this.add(usuario);
        this.add(contrase);
        this.add(lusuario);
        this.add(lcontrase);
        this.add(bInicia);
        this.add(bDetiene);
    }

    public JButton bInicia1(){
        return this.bInicia;
    }
    public JButton bDetiene1(){
        return this.bDetiene;
    }

    public JTextField getTexField(){
        return this.usuario;
    }
    public String getText(){
        String us = this.usuario.getText();
        return us;
    }
    public Object Jcontrase(){
        return this.contrase.getPassword();
    }
}

Aqui estan los controles de evento:

package Interface;

import Proyecto.Dato;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * Created by Ingeniero on 10/01/2016.
 */

public class Evento extends Panel implements ActionListener {

    private Principal frame;
    Dato d1 = new Dato();

    public Evento(Principal frame){
        this.frame = frame;
    }

    @Override
    public void actionPerformed(ActionEvent e) {

        if(e.getActionCommand().equals("bInicia")){
            try {
                Panel p = new Panel();
                String men = p.getText();
                System.out.println("Nombre de usuario"+men);

            }catch(Exception ec){System.out.println("Falta algo");}
        }
        if(e.getActionCommand().equals("bDetiene")){

        }
    }
}

Adjunto una imagen, cuando escribo el texto en la caja de texto, debo poder obtener con getText desde la clase Eventos y mostrarlo en pantalla. Adradezco su ayuda.

AdjuntoTamaño
1.png7.25 KB

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de neko069

A tu clase Principal créale

A tu clase Principal créale un metodo get para tu variable de tipo Panel (tendrás que declarar la variable fuera del constructor, puedes inicializarla dentro) y desde tu clase Evento al cual le pasas una referencia de tu clase Principal ya podrías obtener el valor con algo como:

this.frame.getPanel().getTexField().getText();

Offtopic:
Por cierto, para obtener el password de un JPasswordField lo puedes meter en un String, ésto porque el password se regresa como un char [].

String elPasgüor = new String(elJPasswordField.getPassword());

Mis ojos!! Por qué el color

Mis ojos!! Por qué el color verde?... por qué ESE verde?! :) :)

En el actionPerformed de tu clase Eventos estás creando un nuevo objeto Panel que NO es el que está mostrado en pantalla y como tal no tiene el valor de lo que escribiste.

Básicamente estás haciendo esto:

....
Panel original = new Panel();
/// y momentos más tarde
Panel otro  = new Panel();
otro.getText(); // esperando que te de el valor que tiene la variable original

Haz referencia a tu panel original para poder obtener el valor que esperas.

Recomendaciones extra no solicitadas:

- Escribe el nombre del paquete en minúsculas
- Utiliza un layaout manager o un editor gráfico (GUI Editor). Poner el layout a null se vuelve muy complicado cuando quieres ajustar algo más tarde.
- Prefiere usar los componentes como variables en vez de heredar de ellos ( JFrame, JPanel, etc. )

IntelliJ IDEA tiene un GUI editor con el que puedes hacer como como esto:


O si prefieres puedes hacerlo a mano, pero es más difícil

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">