DateTime, o como tener calendarios en Java con SWT

SWT es un conjunto de Widgets para la creación de interfaces gráficas en Java creados por el proyecto Eclipse… y la verdad es que resultan muy útiles :)

Leí a alguien en el foro de mi facultad preguntando como usar el componente DataTime de SWT y ya que no lo conocía, me dispuse a ver de qué se trataba. Aquí está lo que he encontrado.

El primer paso es descargarse el jar de SWT, que podéis encontrar en su página oficial y la forma de añadirlo al proyecto es la que comenté hace unos días.

El resto sería crear una pequeña aplicación de ejemplo. En este caso me parece bastante sencillo así que os dejaré una clase de ejemplo con algunos pequeños comentarios y si hay dudadas, preguntad :)

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.DateTime;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class EjemploDateTime {
	private Display display;
	private Shell shell;
	private DateTime dateTime;

	public EjemploDateTime() {
		init();
		startGUI();
	}

	/**
	 * Iniciamos todo lo necesario para la interfaz
	 */
	public void init() {
		getDateTime();

	}

	/**
	 * Arrancamos la interfaz gráfica
	 */
	public void startGUI() {
		getShell().pack();
		getShell().open();
		while (!getShell().isDisposed()) {
			if (!getDisplay().readAndDispatch())
				getDisplay().sleep();
		}
		getDisplay().dispose();
	}

	/**
	 * Creamos la "pantalla" que mostraremos
	 * @return
	 */
	public Display getDisplay() {
		if (display == null)
			display = new Display();
		return display;
	}

	/**
	 * Ahora lo mismo con la shell y lo asociamos a la pantalla
	 * @return
	 */
	public Shell getShell() {
		if (shell == null) {
			shell = new Shell(getDisplay());
			shell.setText("http://blog.carballude.es");
			shell.setLayout(new RowLayout());
		}
		return shell;
	}

	/**
	 * Creamos el dichoso DateTime en modalidad calendario y lo asociamos al shell anterior
	 * @return
	 */
	public DateTime getDateTime() {
		if (dateTime == null) {
			dateTime = new DateTime(getShell(), SWT.CALENDAR);
			dateTime.addSelectionListener(new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					System.out.println("Fecha cambiada");
				}
			});
		}
		return dateTime;
	}

	/**
	 * Arrancamos el ejemplo
	 * @param args
	 */
	public static void main(String[] args) {
		new EjemploDateTime();
	}

}

El resultado es una cosa así:

Tenéis más información en uno de los artículos de Lorimer.

Por Carballude

Me llamo Pablo Carballude González, soy graduado en computación con master en HCI y Seguridad Informática. Actualmente trabajo para Amazon en Seattle como Software Developer Engineer. Soy de esas personas que no saben si los textos autobiográficos deben ser en primera o tercera persona. Lo intenté en segunda, pero no le entendí nada :P

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *