Java

Programación en Java.


Logo de Java

Java: serializando objetos para guardar y recuperar en ficheros

Desenpolvando un poco temas de Java, hoy traigo un pequeño HOWTO para guardar datos en ficheros sin complicarnos demasiado la vida. Normalmente trabajaremos sobre una base de datos cuando tenemos muchos datos. Es decir, cuando tenemos programas que gestionen sistemas de información. Pero a veces, necesitamos algo rápido para guardar en ficheros. Así que aquí un pequeño código que usa la interfaz Serializable. Simplemente, el objeto que implementa esta interfaz, será fácilmente guardable como fichero de texto.


Tabla seleccionable con Swing

Parece ser que están dando guerra las tablas xD A continuación les dejo un post con un ejemplo de tabla con cajas seleccionables y otros valores que son en éste caso enteros. Luego tenemos un botón con el que podemos recorrer la tabla (el modelo que representa los valores de la tabla) e ir borrando las filas que tienen la caja seleccionable seleccionada, valga la redundancia…  Al grano, vamos con el ejemplo: package swing;import java.awt.EventQueue;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.border.EmptyBorder;import javax.swing.table.DefaultTableModel;public class TablaSeleccionable extends JFrame { private static final long serialVersionUID = 1L; private JPanel contentPane; private JTable table; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { TablaSeleccionable frame = new TablaSeleccionable(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public TablaSeleccionable() { setTitle(“Tabla seleccionable […]


Java Swing 10: JTable segunda parte, un poco más sobre tablas

Siguiendo los minitutoriales de la serie Swing, he desarrollado éste post sobre tablas para aprender a usar un poco más las tablas. Vamos al grano.Introducción Es necesario: Entorno de Desarrollo. El JDK o JRE, yo he usado el JDK 1.7, pero ya Swing no sigue en desarrollo así que no tiene mucha importancia la versión que uses. Trato de explicar cómo poner cajas seleccionables (checkbox), listas desplegables (combobox) y cajas de texto formateado, en una tabla. En el ejemplo he puesto una caja que sólo admite un número de 3 dígitos. Más adelante lo vemos. Para manejar los datos puedes usar directamente el modelo de datos que autogenera un JTable, puedes usar un AbstractTableModel como aparece en muchos de los tutoriales que he encontrado por Internet, o puedes usar una implementación de DefaultTableModel, que internamente usa un vector con el que te permite añadir o borrar filas de forma dinámica. […]


Java Swing 9: La madre del cordero, el JTable

Siguiendo con los minitutoriales de Swing, ha llegado la madre del cordero del manejo de datos. Tarde o temprano necesitamos visualizar, modificar, borrar o guardar datos. Podemos hacer formularios, recorrer tablas guardadas en variables ocultas, usar listas, al final la manera más simple de mostrar muchos de éstos datos es una tabla, que en Swing se llama JTable. Para seguir éste tutorial hace falta, un entorno de desarrollo (por ejemplo Eclipse), el JDK o el JRE, y un poco de paciencia xD Si eres un máquina entonces descárgate directamente el código y no te olvides de visitarme de vez en cuando, a ver si aumentan las visitas =) A saber Antes de empezar hay que saber que un JTable es un componente Swing, que va a visualizar unos datos que se almacenan internamente en una variable de tipo TableModel. No se recomienda usar directamente pero si no lo necesitamos para […]


¿Qué es un Bean de Java? 4

Qué es Podemos ver por todos lados la palabra Bean, significa vaina en inglés, y le he leido en los lugares más variopintos. Desde el NetBeans, los Java Beans, los Beans en Visual Studio, Eclipse, los Enterprise Java Beans, los Beans que usamos para acceder y guardar datos de nuestros programas. Pero ¿qué es un Bean? Es una clase destinada a almacenar una cantidad de datos para nuestro programa. Su fin es encapsular información, para reutilizar código fuente, estructurando el código fuente en unidades lo más sencillas posible. Ejemplo Con un ejemplo se ve bien sencillo, supongamos que queremos un programa que va a almacenar información sobre personas. Lo primero que debemos de empezar es creando una clase Persona, por ejemplo: public class Persona implements Serializable { private int id; private String nombre; private String apellido1; private String apellido2; private String direccion; private String email; private String telefono; public Persona() […]


Java Swing 8: El JTree

Volviendo de nuevo con un nuevo post sobre Swing, esta vez os dejo un componente un poco más complicado de entender, el JTree. Su uso con el Swing Designer es bien simple de ponerlo en un frame y dibujar su interfaz, pero cuando entremos en su estructura que tenemos para manejarlo necesitaremos tener conocimientos de lo que es un Tipo Abstracto de Datos (TAD para los amigos), y en concreto lo que es un árbol. Lo que se puede hacer y cómo se estructura internamente lo supongo por entendido. Si no es el caso mejor empezar por ver ésto, sino lo de a continuación puede convertirse en un jeroglífico. http://es.wikipedia.org/wiki/Tipo_de_dato_abstractoBúsqueda en Google sobre TADs árboles Construyendo el escenario Para éste tutorial he utilizado Eclipse Juno y la versión 7 update 9 del JDK. Lo primero es crear, dentro de Eclipse, en la ventana del explorador de proyectos, un nuevo proyecto […]


Java Swing 7: Formateando textos

¡Hola de nuevo! El tiempo pasa y no vuelve, el valor más preciado que tenemos, cuando a uno le falta es cuando lo tiene en cuenta. Estoy sacando tiempo de debajo de las piedras para seguir escribiéndoles. Vienen días de tormenta, hace mucho viento, parece que llueve pero no llueve, la prima de riesgo sube y baja, los políticos siguen con sus historias, y yo sigo con lo mío, así que aquí hoy os dejo algo más sobre Swing. En concreto sobre componentes para dar formato a textos y algo más. En éste minitutorial, voy a dar un repaso a los componentes que sólo admiten cierto tipo de valores como los JFormattedTextField. Otro componente interesante, el JEditorPane, que admite por defecto tres tipos de contenido: el texto plano normal y corriente de siempre (text/plain), texto enriquecido (text/rtf), o un documento en HTML (text/html). Y otra caja de texto, el JTextPane, […]


Java Swing 6: Los componentes básicos

¡¡Feliz Año Nuevo!! Hace ya un tiempo que no escribo, así que voy a tratar de que éste año sea mejor que el anterior y comienzo por avanzar en mis investigaciones con Java, así que os dejo éste post por si a alguien le sirve… Sigo escudriñando los componentes de Swing, a ver cómo son los más simples, que no faltan en cualquier programa. Si lo que buscas es aprender rápido lo necesario para usarlos, éste es tu post xD He utilizado la versión 7 del JDK y Eclipse Juno. Si vas a seguir éste tutorial desde cero, lo suyo sería que hicieras un nuevo proyecto, crearas un nuevo JFrame con el generador de código de Eclipse y fueras al Swing Designer. Es decir, entras al modo de diseño para editarlo intentando hacer algo como la imagen de arriba, usando las herramientas que ves aquí abajo: Queda cada vez menos […]


Java Swing 5: Preparando el menú para estas Navidades…

¡Hola de nuevo! Estoy pegándole un repaso a todo lo referente a los menús con Swing usando Eclipse. No deja de sorprenderme lo fácil y rápido que lo tenemos una vez que te has familiarizado con Eclipse, y en concreto con el Swing Designer. En pocos minutos tenemos nuestro esqueleto de la aplicación listo para codificar sus funciones o encajarlo con códigos ya hechos, cada uno para lo que lo necesite… Para todo ésto he usado la zona del Swing Designer que vemos a continuación: Jugando con los componentes donde pone ‘Menu’ podemos hacer todo lo referente. Un JMenuBar es una barra de menús, es la típica barra de menús que sale normalmente en la zona de arriba de un programa con Archivo, Opciones, Ayuda, etcétera… Tenemos que poner uno en el JFrame para entonces, dentro de éste JMenuBar, podamos poner los JMenu o JMenuItem que queramos. Dentro de un […]


Java Swing 4: Pestañas

Para hacer un programa con pestañas repartiendo así los componentes se hace fácil con Swing y Eclipse. En pocos minutos, usando el generador de código esqueleto y con el Swing Designer te genera código. Antes de poner el código, a saber, con el Swing Designer lo que tendremos será la ventana vacía, para poder posicionar los elementos tenemos que añadir en medio un Absolute layout. Luego dibujamos donde va a ir con el JTabbedPane. Después tenemos que añadir dos paneles encima del JTabbedPane, es decir, dos JPanel normales y corrientes. Las pestañas las creará el JTabbedPane cuando añadimos los paneles. Entonces ya tenemos las pestañas creadas, pero tenemos que decirle, en cada pestaña cómo vamos a posicionar los elementos y ponemos otros Absolute layout, uno en cada pestaña. Ahroa ya tenemos las pestañas y además podremos poner los elementos en la zona de la pestaña en que queramos, que en […]


Logo de Java

Java Swing 3: Jugando con un JFrame, un JDialog y un JInternalPane 2

Ésto son un JFrame, un JDialog y un JInternalPane que van por un escritorio, y dice el JDialog al JFrame: – ¡El usuario no me hace caso! Interviene el JInternalFrame y le dice: – Yo lo tengo chungo, ¡¡hazte modal pues!! … Qué chiste más friki xDD Bromas aparte. En éste post voy a escribir sobre el manejo de las ventanas más básicas. Crear, abrir, cerrar, mostrar, esconder, cuádros de diálogo, ventanas internas o externas. Con el diseñador de ventanas (el Swing Designer), puedes ir construyendo tu propio ejemplo. Luego dejaré el ejemplo, códigos fuentes, con comentarios explicando los pasos. Tres clases de ejemplo Para el ejemplo he usado tres clases que he llamado: EjemploJFrame EjemploJDialog EjemploJInternalFrame Lo primero a hacer es tener la última versión de Eclipse y de Java, a ser posible. A fecha de hoy tengo la versión juno de Eclipse y de Java la 1.7 update […]


Java Swing 2: Crear ventanas con Eclipse

Para éste microtutorial he usado el Swing Designer de Eclipse y la versión 1.7 update 9 de Java, el JDK y el JRE. En Eclipse tenemos tenemos varias opciones para generar código esqueleto para nuestro programa. En la ventana del explorador de proyectos, en el lugar elegido le damos con el botón derecho a New -> Other… y nos saldrá una ventana como la siguiente con las opciones disponibles con respecto a Swing: En el árbol de Swing Designer tenemos las opciones para crear programas con ventanas Swing, valga la redundancia. Todos los códigos generados con el Swing Designer también se pueden crear a mano y se pueden llevar a otros entornos de desarrollo y te van a funcionar. Ésto lo digo porque no ocurre siempre, según en qué entorno de desarrollo estés, a veces pasa que si te sales de él ya no te sirven los códigos porque se […]


Java Swing 1: A vista de pájaro

En éste post, espero dar un vistazo general al paquete de clases de Java de Swing, en concreto a la versión estándar 1.7 update 9. En la fecha en que escribo ésto, los Swing ya no están en desarrollo, con lo que no se van a añadir nuevas funcionalidades, ni componentes. En la web de Oracle, podemos ver la jerarquía completa del paquete javax.swing en la documentación original, aquí teneis el árbol de la jerarquía de clases: http://docs.oracle.com/javase/7/docs/api/javax/swing/package-tree.html Casi todas las clases que hay para crear nuestra interfaz de usuario van a empezar por J, como JFrame, JDialog, JButton, JLabel, etcétera… Ya tengo instalada la versión del JDK y del JRE más nueva ahora mismo para asegurarme de que tengo al día el paquete de clases. Así pues, la ayuda contextual de Eclipse me muestra un listado de todos éstos componentes: Tenemos 46 clases en éste listado, de las cuales […]


Hola Mundo con Swing y Eclipse

Aquí tienen cómo crear una primera aplicación gráfica en Java usando Swing y Eclipse. El ejercicio clásico ¡Hola Mundo! usando una tecnología que nos brinda Java: Swing. Y para verlo, el entorno de desarrollo elegido ha sido Eclipse. Curioseando qué tal van los desarrollos, con respecto a las interfaces gráficas de usuario (llamadas GUI para los amigos), veo que tengo otra nueva actualización del Window Builder. El Window Builder es un conjunto de plugins de Eclipse que nos van a permitir hacer GUIs en Java sin gastar casi tiempo. A fecha de hoy tengo la versión Juno de Eclipse, y me acabo de instalar el plugin Swing Designer que está disponible dentro del propio Eclipse, en la famosa opción Help -> Install New Software. Instalada la versión 1.5.1 del Swing Designer, me he puesto manos a la obra. En el Explorador de Proyectos, donde estés creando tu aplicación Java, le das […]


Java Medio 5: Clases tipo Interfaz

Vamos a ver cómo se usan las clases de tipo interface. Se usan de igual manera que las clases abstractas, pero tienen unas características peculiares propias de ellas que las diferencian. Las interfaces establecen las variables y funciones que se van a tener, pero no se implementan las funciones dentro de ellas, sino que se implementan en las clases derivadas. No podemos heredar de varias clases abstractas, pero sí que se puede hacer herencia múltiple usando interfaces. Un ejemplo para explicarlo todo ésto es el siguiente: package javaMedio;public class JavaMedio5Interfaz { public static void main(String[] args) { unaClase a; a = new unaClase(); a.nombre = “María”; a.escribir(); a.contar(); }}abstract class cBase { public String nombre; public void escribir() { System.out.println(nombre); }}interface iBase { public static int version = 2; public void contar();}class unaClase extends cBase implements iBase { public void contar() { System.out.println(“versión: ” + version + “rnvamos a contar: […]


Java Medio 4: Miembros tipo Static

Algo raro pasa con static. Surge de la necesidad de compartir datos o código entre todas los objetos de una misma clase. Por ello, los atributos declarados como static dentro de una clase, existen incluso sin tener ningún objeto de la clase, y se puede acceder a ellos con sólo haber cargado la clase en la JVM. Es decir, por ejemplo, si tenemos una clase como la siguiente: package javaMedio;public class Persona { public String nombre = new String(); public static String nombreDeLaClase = new String(“Persona”); private static String version = new String(“1.0.0”);  public void escribir() { System.out.println(“Ésta persona se llama ” + nombre); System.out.println(“…” + nombreDeLaClase); System.out.println(“…” + version); }} Y en otro fichero tenemos algo tal que así: package javaMedio;public class JavaMedio4Static { public static void main(String[] args) { System.out.println(Persona.nombreDeLaClase); // no podemos hacer ésto // System.out.println(Persona.version); Persona p1 = new Persona(); Persona p2 = new Persona(); p1.nombre […]


Java Medio 3: Clases abstractas

Continuando con la herencia y polimorfismo de las clases vamos a ver qué son los métodos y clases abstractas. Cuando una clase va a ser la base para otras, pero no van a codificarse las funciones que tiene, sino que se van a hacer en las clases que la extienden, entonces declaramos la clase como abstract. Vamos a ver con un ejemplo cómo se usa, es muy sencillo: package javaMedio;public class JavaMedio3Abstract { public static void main(String[] args) { claseBase objeto1, objeto2; // ésto no lo podemos hacer porque es abstract // objeto1 = new claseBase(); objeto1 = new claseA(); objeto2 = new claseB(); objeto1.cadena = “cadena del objeto1”; objeto2.cadena = “cadena del objeto2”; objeto1.escribir(); objeto2.escribir(); }}abstract class claseBase { public byte x, y; public String cadena; public abstract void escribir();}class claseA extends claseBase { public void escribir() { System.out.println(“Esto es un objeto de la claseA: ” + cadena); }}class […]


Java Medio 2: Extendiendo clases a partir de otras clases

Sábado sabadete, aquí va otro tutorialete… xD para los que esten siguiendo estos minitutoriales para aprender a programar en Java, vamos a continuar con los conocimientos indispensables antes de empezar a hacer programas más o menos grandes. O si ya te has enfrascado con alguno y necesitas saber ésto de los extends espero que aclare las cosas. Ésta vez voy a explicar cómo reutilizar código, para no tener que hacer una y otra vez lo mismo o para mantener el código bien organizado utilizando la herencia y polimorfismo. Vamos a ver cómo crear clases reutilizando el código de clases ya creadas, de manera que podremos ampliar su uso añadiendo nuevas funciones o miembros de la clase, o podremos modificar los existentes. Todo ésto se hace con la palabra reservada extends. A saber, al utilizar extends, la clase que extiende a otra hereda todas las variables y funciones de la otra. […]


Java Medio 1: Clases y paquetes, organización en ficheros

Vamos a ver cómo organizar los programas Java, en clases u objetos como prefiramos llamarlos. Cómo dividir los códigos fuentes en distintos ficheros o cómo plantearse la creación de un programa bien grande estructurándolo para poder hacerlo poco a poco, repartiendo el trabajo o haciéndolo en partes más simples. Todo son clases en Java, y estas clases se organizan packetes, llamados packages en inglés. Podemos crear clases a partir de otras clases utilizando el extends. Y cada clase la podemos separar individualmente en cada fichero. Por otro lado los paquetes de clases los podemos importar para usarlos en una clase mediante la instrucción import. Resumiendo ésto es todo, a continuación lo veremos explicado.Cada fichero se debe nombrar con el nombre de la clase principal. Un ejemplo que nos va a servir para comprender varios conceptos es el siguiente:package javaMedio;import java.util.Date;public class JavaMedio1ClasesPaquetes { public static void main(String[] args) { Persona […]


Java Básico 6: Matrices y vectores

Ya estamos a domingo de nuevo, parece que va siendo costumbre los domingos de nuevo escribir un post. Vamos a empezar con un tipo de variables que vamos a usar para almacenar muchos datos de igual naturaleza, es decir, los llamados vectores y matrices. Algunos llaman a los vectores matrices también porque son matrices de una sola fila. Imaginemos pues que queremos guardar 3 elementos de tipo entero. Para ello usaremos lo siguiente: package javaBasico;public class JavaBasico6Matrix { public static void main(String[] args) { // declaración de la variable ‘vector’ int vector[]; // se reserva memoria para guardar los  // valores, es decir, guardamos 3 posiciones // de memoria de tipo entero vector = new int[3]; // guardamos en la posición 0 el número 2 vector[0] = 2; // guardamos… vector[1] = 3; // guardamos… vector[2] = 4; // escribimos en el out (pantalla) el vector System.out.println(vector[0] + “, ” […]


Java Básico 5: Clases comunes

¡Hola de nuevo! Estoy cogiendo carrerilla con ésto de los tutoriales, me siento fresco, será el buen tiempo, que es fin de semana, los pájaros cantan, el indice Ibex sube, la prima de riesgo baja aquí en España. La cosa no está para echar cohetes pero bueno, si necesitas hacer cosas en Java, que ya están hechas, sólo tendrás que usarlas y entonces sí que vas a hechar cohetes. Vamos a ver unas clases de Java que nos facilitan la vida mucho, sobre todo si estas siguiendo el tutorial desde cero. Para empezar, si vamos a utilizar cadenas de caracteres, Java nos proporciona la clase String. Podemos declarar variables de tipo String de la forma: String cadena;cadena = “Aquí va la cadena de caracteres que queramos”;cadena = cadena + cadena;System.out.println(cadena); Ésto anterior nos va a imprimir: Aquí va la cadena de caracteres que queramosAquí va la cadena de caracteres que […]


Java Básico 4: Funciones

Hola! hoy es domingo, tengo un rato libre, y he pensado avanzar un poco este curso de programación rápido con las funciones. Vamos a ver en líneas generales cómo dividir el código de nuestro programa para que sea más fácil luego leerlo, para desarrollarlo en partes o poco a poco, en fin, es de buena costumbre usar funciones cuando hacemos tareas que usan mas de unas 20 líneas de código. Es decir, comenzamos escribiendo código en el ‘main’, y llegado el momento de que nuestro ‘main’ ocupa muchas líneas entonces se convierte en un mamotreto de código que es bien complicado de leer. Para evitar ésto lo dividimos con funciones como por ejemplo puede ser el código siguiente: public class JavaBasico4Funciones { public static void main(String[] args) { PrincipioDelPrograma(); HacerCosa1(); HacerCosa2(); HacerCosa3(); FinalDelPrograma(); } static void PrincipioDelPrograma(){ } static void HacerCosa1(){ } static void HacerCosa2(){ } static void HacerCosa3(){ } […]


Java Básico 3: Bucles y estructuras de control

Sábado por la mañana, hace buena temperatura ahora en otoño, ni frio ni calor en Alicante. Así da gusto. Pues hoy voy a darle vueltas a los bucles y a controlar qué se ejecuta en un pequeño programa en Java. Vamos a ver los bucles y las estructuras principales que se usan. Éstos son los if, else, switch, while, do while, for, break, continue y el try-catch para control de errores de ejecución. Vamos al grano, si usamos el siguiente código: // Paquete donde se organiza ésta clase de Javapackage javaBasico;// Declaración de la clase con su nombrepublic class JavaBasico3BuclesEstructuras { // Entrada principal al programa, el main para los amigos public static void main(String[] args) { // Aquí va el código que empieza nada más  // arrancar el programa System.out.println(“¡Hola Mundo!”); // declaro la variable a y le doy valor byte a = 1;  // el if sirve para comprobar si […]


Java Básico 2: Tipos de datos

En éste post vamos a ver los tipos de datos primitivos, los básicos, sobre los que se construirán datos u objetos más complejos o complicados, valga la redundancia. Los más usuales son: byte, que permite almacenar número de 8 bits, negativos y positivos. Es decir desde el -11111111 al +11111111, o que es lo mismo que desde -128 al +127. short, es igual que el byte pero en vez de 8 bits con signo tenemos 16 bits. Aumentan considerablemente la contidad de números posibles que van desde el -32768 al +32767. int, es igual pero ahora tenemos 32 bits. long, ahora tenemos 64 bits. char, guarda valores del 0 al 65535. Los primeros valores corresponden a los caracteres ASCII, que son los caracteres normales que usamos al escribir, es decir, las letras. Por ejemplo el 97 es la ‘a’ float, se utiliza para números decimales. Se utilizan 32 bits, con […]