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

Mostrar ArrayList de Objetos en un JFrame

si tengo una clase con una lista de personas, ¿como hago para poder imprimirlos en otra clase?

Ejemplo:

public class listaPersona{
   
    ArrayList<Persona> vectPersona=new ArrayList<Persona>();
   
    public void registrarPersona(Persona nuevaPersona){
       
        vectPersona.add(nuevaPersona);
       
}

// y tengo este metodo que me lo muestra por consola pero quiero que me lo muestre en un
 // JFrame atraves de un Panel o una tabla u cualquier otro medio el cual pueda interactuar con los registros del arraylist

   public void mostrarPersonas(){
   
       
       
        for (int i = 0; i < vectPersona.size(); i++) {
           
            if (vectPersona.get(i).getCodigoPersona()>=0) {
                System.out.println("cod: "+vectPersona.get(i).getCodigoPersona()+" Persona : "+vectPersona.get(i).getNombreUsuario());
                System.out.println();
            }
        }
    }

    }

Comentarios

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 Jose Manuel

Pues donde tengas tu

Pues donde tengas tu componente gráfico haces una copia o con el mismo arraylist lo muestras. Por ejemplo:

if(!persona.isEmpty()) { //persona es tu arraylist o list
    Iterator iterador = persona.listIterator(); //el objeto iterador te ayuda a recorrer una coleccion.
    while(iterador.hasNext()) {
        at.append(iterador.next() + "\n"); //el objeto at es un JTextArea y el método append agrega el contenido de persona al area de texto
    }
}

Espero que sea lo que preguntaste. Por convención las clases comienzan con mayúscula.

Imagen de Payan

Esta es el primer frame donde

Esta es el primer frame donde el usuario introduce nombre y dni y luego aparece
otro frame con un JTextArea donde estan todos los usuarios ingresados.

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JTextPane;

public class Datos_Usuarios extends JFrame {
       
       
          listaDePersonas registroPersona=new listaDePersonas();

        private JPanel contentPane;
        private JButton Registrar;
        private JTextField Nombre;
        private JTextField Dni;

        private int cod=0;
        /**
         * Launch the application.
         */

       
        /**
         * Create the frame.
         */

        public Datos_Usuarios() {
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                setBounds(500, 500, 238, 178);
               
                Container c = this.getContentPane();
                c.setLayout(new BorderLayout());
               
                contentPane = new JPanel();
                contentPane.setBackground(new Color(153, 204, 255));
                contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
                setContentPane(contentPane);
                setVisible(true);
                disenoVentana();
               
        }
       
       
       
        public void disenoVentana(){
                contentPane.setLayout(null);
                JButton Registrar = new JButton("Registrar");
               
       
               
               
                //botones
                Registrar.setBounds(64, 112, 120, 23);
                contentPane.add(Registrar);
               
                //fin botones
               
                //labels
               
                JLabel lblNewLabel = new JLabel("NOMBRE :");
                lblNewLabel.setBounds(28, 28, 78, 14);
                contentPane.add(lblNewLabel);
               
                JLabel lblNewLabel_1 = new JLabel("DNI : ");
                lblNewLabel_1.setBounds(28, 72, 67, 14);
                contentPane.add(lblNewLabel_1);
               
                //fin labels
               
               
                // cajas de texto
               
                Nombre = new JTextField();
                Nombre.setBounds(87, 69, 120, 20);
                contentPane.add(Nombre);
                Nombre.setColumns(10);
       
                Dni = new JTextField();
                Dni.setBounds(87, 25, 120, 20);
                contentPane.add(Dni);
                Dni.setColumns(10);
                contentPane.list();
               
       
               
                Registrar.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {

                                 Persona nuevaPersona;
                                 nuevaPersona=new Persona();
                                 String nomb=Nombre.getText();
                                 String dni=Dni.getText();
                               
                               
                                 
                                 nuevaPersona.dato2(cod, nomb, dni);
                                registroPersona.registrarPersona(nuevaPersona);
                                 
                        cod++;
               
                        //¿lo del cod  que es el cod  como podria hacerlo para cada vez que pulse y agrege y  se    incremente?
                               
                        }
                });
               
        }

                       
                       
                       
                }
               

el frame del JTextArea es este, pero no me aparece y no se que estoy haciendo mal.

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextPane;

public class lista_grafica extends JFrame {

        private JPanel contentPane;
    private JTextArea panel;
        /**
         * Launch the application.
         */

   

 
        /**
         * Create the frame.
         */

        public lista_grafica() {
               
               
       
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                setBounds(100, 100, 450, 300);
                contentPane = new JPanel();
                contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
                setContentPane(contentPane);
                contentPane.setLayout(null);
               
                JTextArea panel = new JTextArea();
                panel.setBounds(111, 77, 237, 119);
                contentPane.add(panel);
       
                                  mostrar_lista();
   
        }

               public void mostrar_lista(){

      Lista_De_Personas obj= new Lista_De_Personas();

                                         obj.mostrar();
       

}
       
       
       
        // este metodo esta dentro de la clase Lista_De_Personas
        public void mostrar(){
               
if(!vectPersona.isEmpty()) { //persona es tu arraylist o list
    Iterator iterador = vectPersona.listIterator(); //el objeto iterador te ayuda a recorrer una coleccion.
    while(iterador.hasNext()) {
        at.append(iterador.next() + "\n"); //el objeto at es un JTextArea y el método append agrega el contenido de persona al area de texto
    }
}

        }
}

Imagen de Jose Manuel

Lo primero que observe es que

Lo primero que observe es que en la clase Datos_Usuarios tienes un objeto de la clase Persona que debería ser una variable de instancia (variable miembro) en lugar de una variable local. Lo segundo, es que todos tus componentes gráficos deberían ser también declarados como variables miembro.

Lo tercero es que en tu clase lista_grafica, según la convención establece que los nombres de las clases inicien con mayúsculas.
EDIT: Lo cuarto, no veo referencia a tu arraylist vecPersona dentro de la clase. ¿Como obtienes ese objeto? Jaja siempre me brinco los comentarios, mala costumbre...
Aquí lo que debes de hacer (una opción) es obtener tu arraylist. o hacer un método que reciba el JTextArea dentro de la clase ListaDePersonas.
Algo así;

public void mostrar(JTextArea areaTexto) {
//Aqui haces el recorrido y pegas en el JTextArea
}

Quinto, estas usando un componente gráfico de tipo JTextArea que se llama panel. Pero en el método mostrar usas uno que se llama at

Ademas se recomienda que dentro de tu aplicación solo debe haber un JFrame, que seria la ventana principal, las demás ventanas pueden ser JDialog.
Saludos.

Imagen de Payan

Gracias amigo! aunque no

Gracias amigo! aunque no consigo hacerlo funcionar jejej ,si eres tan amable de poner un ejemplo del codigo
solo con pocos datos solo para ver como lo haces.
para resumirte lo que intento hacer es:

Recoger del JTextfield el nombre de una persona que esta una clase del objeto persona dentro de un formulario, y cuando
presione el boton ese dato se agrege a un arraylist de objetos ,en este caso un arraylist de personas, y al presionar aparezca
otro frame o jdialog con un panel con los nombres que voy registrando...

No es tan dificil pero .. no me sale jejeje

ARRAY LIST

Buenas Amigo ..

Una de las formas que los puedes hacer es primero me imagino que debes tener tu clase con tus get // set . Digamos Persona.

cuando estemos en el Frame :

haces un llamado a la clase

-------------------------------------------------------------------------------------

Persona per=new Persona();

per.setCodPersona(txtCodigo.getText());
//y asi todos las variables....

luego

//o agregas al arrayList:  digamos que tu arraylist se llama :

List<Persona> lista=new ArrayList<Persona>();

lista.add(per);  // Lo Agregas

//luego para imprimirlo ,tendrías que hacer esto

for(Persona item:lista){

txtCodigo.setText(item.getCodPersona);
//y asi imprimes las demas variables en los txt vale decir que te va a traer solo el ultimo dato ingresado
}
// asi lo imprimes en una tabla

DefaultTableModel tabla=(DefaultTableModel) tbltabla.getModel();
tabla.setRowCount(0);
for(Persona item:lista){
Objet fila[]={item.getCodPersona()};
tabla.add(fila);
}

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