public class Formulario extends JFrame{
private PanelLabelConCampo panelNombre = new PanelLabelConCampo("Nombre");
private PanelLabelConCampo panelFecha = new PanelLabelConCampo("Fecha de Nacimiento");
private PanelLabelConCampo panelEdad = new PanelLabelConCampo("Edad");
private PanelLabelConCampo panelTipoDoc = new PanelLabelConCampo("Tipo de Documento");
private PanelLabelConCampo panelNumeroDoc = new PanelLabelConCampo("Número de Documento");
private PanelLabelConCampo panelDireccion = new PanelLabelConCampo("Dirección");
private PanelLabelConCampo panelTelefono = new PanelLabelConCampo("Teléfono");
private PanelLabelConCampo panelCelular = new PanelLabelConCampo("Celular");
private PanelLabelConCampo panelCorreo = new PanelLabelConCampo("Correo Electrónico");
private PanelLabelConCampo panelEps = new PanelLabelConCampo("Eps");
private PanelLabelConCampo panelTipoSangre = new PanelLabelConCampo("Tipo de Sangre");
private PanelLabelConCampo panelEstado = new PanelLabelConCampo("Estado");
public Formulario() {
setLayout(new BorderLayout());
add(new PanelTitulo(), BorderLayout.NORTH);
add(new PanelFormulario(), BorderLayout.CENTER);
setTitle("Gestion Colegio");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
private class PanelTitulo extends JPanel {
public PanelTitulo() {
JLabel titulo = new JLabel("REGISTRO DE ESTUDIANTES");
titulo.setFont(new Font("Verdana", Font.BOLD, 28));
add(titulo);
setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
setBackground(new Color(51, 172, 255));
}
}
private class PanelFormulario extends JPanel {
public PanelFormulario() {
//Establecemos layout
setLayout(new GridLayout(6, 2));//Grilla de 6 filas y 2 columnas
//Añadimos los paneles de campos de texto
add(panelNombre);
add(panelFecha);
add(panelEdad);
add(panelTipoDoc);
add(panelNumeroDoc);
add(panelDireccion);
add(panelTelefono);
add(panelCelular);
add(panelCorreo);
add(panelEps);
add(panelTipoSangre);
add(panelEstado);
//Construimos borde
TitledBorder bordeTitulo = new TitledBorder("Datos del Estudiante");
bordeTitulo.setTitleFont(new Font("Verdana", Font.BOLD, 26));
setBorder(BorderFactory.createCompoundBorder(
bordeTitulo,
BorderFactory.createEmptyBorder(25, 30, 25, 30)));
}
}
/**
* Clase que modela un panel con una etiqueta
* y un campo de texto.
*/
private class PanelLabelConCampo extends JPanel {
JLabel label;
JTextField campo;
public PanelLabelConCampo(String textoEtiqueta) {
/*
* Hacemos que los componentes "floten" hacia la derecha
* para que cuando construyamos un formulario con varios
* paneles como este, los campos de texto quedarán alineados
* unos debajo de otros.
*/
setLayout(new FlowLayout(FlowLayout.RIGHT));
label = new JLabel(textoEtiqueta);
campo = new JTextField(12);
add(label);
add(campo);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Formulario();
}
});
}
}