Java + Swing 015. Modo diseño en NetBeans. Fecha y Hora con objeto Calendar.

Ejercicio: Desarrollar un formulario con jFrame que permite el manejo de fecha y horas.
Para diseñar el formulario utilizamos un jFrame. Como se ve en la imagen siguiente, es la forma como debe quedar el formulario después de agregar todos los objetos correspondientes. Se indica con marcadores en “rojo” la referencia del objeto con nombre de variable y tipo de objeto. Esto es importante para que coincidan con los métodos que crearemos.
Los objetos que utilizamos en el diseño son: JFormattedTextField, JTextField, JTextArea, JLabel, JButton y el JScrollPane que se agrega de forma automática en caso necesario.
Observación: el indicador (dd/MM/yyyy) significa fecha en formato día/mes/año.
En la imagen siguiente vemos la forma de configurar el “JFormattedTextField”, que es el objeto que se utiliza para controlar la entrada de datos en un formato específico, en este caso “fecha”.
La serie de pasos es la siguiente: (1) seleccionar objeto. (2) acceder a Propiedades o “Properties”. (3) seleccionamos “AbstractFormatterFactory”. (4) indicamos “mascara”. (5) tipo “personal”. (6) marcamos el formato que deberá respetarse. (##/##/####) -- (09/07/2013). (7) Aceptamos los cambios. Esto se aplica solo al objeto “JFormattedTextField”.
Creamos los métodos siguientes en el apartado “Fuente”. Estos métodos utilizan conversiones de tipos de datos, controles de excepciones y demás para controlar lo mejor posible el resultado. Se insertan algunos comentarios para tratar de explicar el funcionamiento de cada método.
Código Java
private String fechaString(Calendar fecha){
//A este método le pasamos un objeto Calendar y la convierte en un String de fecha.
String retorno = null;
//Utilizamos SimpleDateFormat para establecer el formato de la fecha.
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
//Si fecha está vacío retornará null.
if(fecha != null){
//Este proceso permite convertir el Objeto Calendar en un formato de fecha útil.
retorno = sdf.format(fecha.getTime());
}
return retorno;
}
private String horaString(Calendar fecha){
//A este método le pasamos un objeto Calendar y la convierte en un String de hora.
String retorno = null;
//Utilizamos SimpleDateFormat para establecer el formato de la hora.
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
if(fecha != null){
//Este proceso permite convertir el Objeto Calendar en un formato de hora útil.
retorno = sdf.format(fecha.getTime());
}
return retorno;
}
private Calendar fechaCalendar(String fecha){
//A este método le pasamo como parámetro un String con formato fecha específico
//y la convierte en objeto Calendar.
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
//Obtenemos una instancia del objeto Calendar.
Calendar cal = Calendar.getInstance();
//Utilizamos un try para controlar entrada de datos erroneos.
try {
//Hacemos la conversión con este procedimiento.
cal.setTime(sdf.parse(fecha));
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error de formato de fecha: " + e);
}
return cal;
}
private void obtenerFechaUser(){
//Utilizamos este método para obtener la fecha que haya introducido el usuario.
//En este caso desde el JTextField "fechaUser".
String fecha = fechaUser.getText();
//Comprobamos que no este vacío.
if(fecha != null){
//Llamamos a nuestros métodos de más arriba.
Calendar fechaCalendar = fechaCalendar(fecha);
fechaTestD.setText(fechaCalendar.toString());
String fechaString = fechaString(fechaCalendar);
fechaTest.setText(fechaString);
}
}
private void obtenerFechaSistema(){
//Este método permite obtener una instancia del Objeto Calendar, procesarla
//y obtner la fecha y la hora actual.
Calendar cal = Calendar.getInstance();
String fechaString = fechaString(cal);
fechaObtenido.setText(fechaString);
String horaString = horaString(cal);
horaObtenido.setText(horaString);
}
Lo siguiente será agregar los eventos que harán funcionar a nuestro programa. Utilizamos el evento “ActionPerformed” para llamar los métodos desde los botones. Para utilizar un “Evento” hacemos clic derecho sobre el objeto y seleccionamos “Eventos” de la lista utilizamos la que podamos aplicar al objeto. En la imagen vemos como se indica (1)” setLocationRelativeTo(null);” que nos permitirá centrar el formulario llamándola desde el constructor del jFrame. (2) nos indica el evento que se llama desde el botón “probar”. (3) llamamos al método “obtenerFechaUser();” que habíamos creado. Este método se ejecutará al hacer clic sobre el botón “probar”.
La última imagen nos muestra el jFrame en ejecución. Obs.: En el “JTextArea” imprimimos el Objeto calendar sin procesar, por tanto trae todo lo que incluye el objeto.

No hay comentarios :

Publicar un comentario