Como hacer un Formulario Dinámico

Hola. Necesito hacer un formulario dinamico visual en java. cuando digo dinamico me refiero a que el suario pueda añadir si desea un JTextField(un nuevo campo al formulario). Y deseo saber como puedo hacer esto. Lo estoy intentando con arraylist Pero no se como mostrar los JTextfiel guardado en el array en el JPanel. Este es el codigo de como lo esta intentando..
Nota: si conocen como puedo hacer esto de esta o otra manera dejeme saber Muchas Gracias.

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Rserializacion extends JFrame implements ActionListener {
ArrayList array = new ArrayList();
JTextField text;
JTextField text2=new JTextField(20);
JButton boton=new JButton("Procesar");
JPanel panel=new JPanel();
JPanel panel2=new JPanel();
int cant;
Rserializacion(){
super("Ricky Project");
setSize(200, 200);
add(panel);

panel.add(boton);
setVisible(true);
boton.addActionListener(this);
array.add(text);
}
public void actionPerformed(ActionEvent e) {
text=new JTextField(20);
array.add(text);
panel.add(text);
}
public static void main(String []args)
{ Rserializacion obj=new Rserializacion();
}
}
import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList; import javax.swing.JButton;import javax.swing.JFrame; import javax.swing.JPanel;import javax.swing.JTextField;
public class Rserializacion extends JFrame implements ActionListener {
ArrayList array = new ArrayList();JTextField text;JTextField text2=new JTextField(20);JButton boton=new JButton("Procesar");JPanel panel=new JPanel();JPanel panel2=new JPanel();
int cant; Rserializacion(){ super("Ricky Project");
setSize(200, 200);
add(panel);

panel.add(boton); setVisible(true);boton.addActionListener(this);
array.add(text);
}
public void actionPerformed(ActionEvent e) {text=new JTextField(20); array.add(text); panel.add(text);
}
public static void main(String []args) { Rserializacion obj=new Rserializacion(); }}

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 JaimeItlzc

Dinamico

Ejemplo:
 

Saludos.