problema con un JTextField

Iniciado por jzvp321, 18 Julio 2018, 20:13 PM

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

jzvp321

Hola a todos, soy nuevo en el mundo de la programación y estoy aprendiendo a programar un pequeño programa sencillo, que me permita a mi, agregar un texto a través de un JTextField y cuando le de click al boton de saludar, me aparezca en un JOptionPane, el nombre del usuario...

he programado todo y todo me funciona de maravilla, ejecuto el programa, me sale el cuadro, agrego el texto en el JTextField y cuando le doy click al boton, me aparece el JOptionPane pero vacio, y no entiendo porque... yo cree un metodo en la clase del JTextField para pasar esa información a una variable de tipo String, y cree un metodo que me devuelva dicha información de esa varaible, pero cuando la instancio en el JOptionPane, me sale en blanco, así haya escrito lo que sea en el JTextField, adjunto mi código para ver si me pueden hechar una mano...





public class ejercicio {

   public static void main(String[] args) {
      // TODO Auto-generated method stub
      frame a = new frame();
   }

}

class frame extends JFrame {
   public frame(){
      this.setTitle("titulo");
      this.setSize(350, 180);
      this.setResizable(false);
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      this.setLocationRelativeTo(null);
      
      // ---- Agregar Paneles
      primerPanel a = new primerPanel();
      this.add(a,BorderLayout.NORTH);
      
      segundoPanel b = new segundoPanel();
      this.add(b,BorderLayout.CENTER);
      
      tercerPanel c = new tercerPanel();
      this.add(c,BorderLayout.SOUTH);
      
      this.setVisible(true);
   }
   
   // primer Panel
   class primerPanel extends JPanel {
      public primerPanel() {
         this.setLayout(new FlowLayout(FlowLayout.CENTER,15,15));
         JLabel titulo = new JLabel("Ingrese un nombre para saludar");
         this.add(titulo);
      }
   }
   
   // segundo Panel
   class segundoPanel extends JPanel {
      private JTextField contenido;
      private String informacion;
      public segundoPanel() {
         this.setLayout(new FlowLayout(FlowLayout.CENTER,15,15));
         contenido = new JTextField(20);
         this.add(contenido);
      }
      public String estableceNombre(){
         return informacion = contenido.getText();
      }
   }
   
   // tercer Panel
   class tercerPanel extends JPanel implements ActionListener {
      
      segundoPanel emisor = new segundoPanel();
      
      public tercerPanel() {
         this.setLayout(new FlowLayout(FlowLayout.CENTER,15,15));
         JButton btn = new JButton("¡Saludar!");
         btn.addActionListener(this);
         this.add(btn);
      }

      @Override
      public void actionPerformed(ActionEvent e) {
         // TODO Auto-generated method stub
         JOptionPane.showMessageDialog(null, "¡Hola "+emisor+"!");
      }
   }
}

srWhiteSkull

Pero emisor es un objeto, y tendrías que invocar un método de ese objeto que devolviera la cadena una cadena para que fuera "imprimible".