package formularioCard;
import java.awt.CardLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public class Ejemplo extends JFrame{
private JTextField campo1;
private JTextField campo2;
private JTextField campo3;
private JTextField campo4;
private JTextField campo5;
private JTextField campo6;
private JButton btSiguiente;
private JButton btAnterior;
private JButton btTerminar;
private CardLayout gestorPaneles;
private JPanel pnPrincipal;
public Ejemplo() {
gestorPaneles = new CardLayout();
pnPrincipal = new JPanel();
pnPrincipal.setLayout(gestorPaneles);
//Añadimos los paneles formularios, dándoles un nombre
pnPrincipal.add(new Formulario1(), "form1");
pnPrincipal.add(new Formulario2(), "form2");
setContentPane(pnPrincipal);
setTitle("Ejemplo");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
//Paneles formulario
private class Formulario1 extends JPanel {
public Formulario1() {
campo1 = new JTextField(10);
campo2 = new JTextField(10);
campo3 = new JTextField(10);
btSiguiente = new JButton("Siguiente >");
btSiguiente.addActionListener(new AccionSiguiente());
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
JPanel pn1 = new JPanel();
pn1.add(new JLabel("Campo 1: "));
pn1.add(campo1);
JPanel pn2 = new JPanel();
pn2.add(new JLabel("Campo 2: "));
pn2.add(campo2);
JPanel pn3 = new JPanel();
pn3.add(new JLabel("Campo 3: "));
pn3.add(campo3);
JPanel pn4 = new JPanel();
pn4.setLayout(new FlowLayout(FlowLayout.RIGHT));
pn4.add(btSiguiente);
add(pn1);
add(pn2);
add(pn3);
add(pn4);
setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15),
BorderFactory.createRaisedSoftBevelBorder()));
}
}
private class Formulario2 extends JPanel {
public Formulario2() {
campo4 = new JTextField(10);
campo5 = new JTextField(10);
campo6 = new JTextField(10);
btAnterior = new JButton("< Anterior");
btAnterior.addActionListener(new AccionAnterior());
btTerminar = new JButton("Terminar");
btTerminar.addActionListener(new AccionTerminar());
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
JPanel pn1 = new JPanel();
pn1.add(new JLabel("Campo 4: "));
pn1.add(campo4);
JPanel pn2 = new JPanel();
pn2.add(new JLabel("Campo 5: "));
pn2.add(campo5);
JPanel pn3 = new JPanel();
pn3.add(new JLabel("Campo 6: "));
pn3.add(campo6);
JPanel pn4 = new JPanel();
pn4.add(btAnterior);
pn4.add(btTerminar);
add(pn1);
add(pn2);
add(pn3);
add(pn4);
setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15),
BorderFactory.createRaisedSoftBevelBorder()));
}
}
//Acciones para los botones
private class AccionSiguiente implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//Muestra el siguiente panel, el llamado "form2"
gestorPaneles.next(pnPrincipal);
/*
* También serviría:
* gestorPaneles.show(pnPrincipal, "form2");
*/
}
}
private class AccionAnterior implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//Muestra el primer panel, el llamado "form1"
gestorPaneles.first(pnPrincipal);
/*
* También serviría:
* gestorPaneles.show(pnPrincipal, "form1");
*/
}
}
private class AccionTerminar implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
/*
* Aquí decidimos que hacer al terminar de rellenar
* el formulario.
* Mostrar datos, o comprobar si todos los campos están completos, etc...
*/
StringBuilder mensaje = new StringBuilder();
mensaje.append("Formulario 1:\n");
mensaje.append("Campo 1: " + campo1.getText());
mensaje.append("\nCampo 2: " + campo2.getText());
mensaje.append("\nCampo 3: " + campo3.getText());
mensaje.append("\n\nFormulario 2:\n");
mensaje.append("Campo 4: " + campo4.getText());
mensaje.append("\nCampo 5: " + campo5.getText());
mensaje.append("\nCampo 6: " + campo6.getText());
JOptionPane.showMessageDialog(null, mensaje);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Ejemplo();
}
});
}
}