Social

Featured Posts

sábado, 24 de enero de 2015

Java: Convertir una lista en arreglo o array

En algunos casos puede ser mas conveniente tener nuestros objetos dentro de un arreglo (Object[]) que dentro de una lista (List<Object>) . En tal caso puede se puede realizar la conversión de lista a arreglo muy fácilmente.

En el siguiente ejemplo se puede observar como se define una lista de Integer (List<Integer>) y luego se convierte en una arreglo de Integer (Integer[]).
import java.util.ArrayList;
import java.util.List;
public class ListToArray {
public static void main(String[] args){
//Se crea un List de Integers
List<Integer> lista = new ArrayList<Integer>();
lista.add(1);
lista.add(2);
lista.add(3);
lista.add(4);
lista.add(5);
//Se pasa la lista de Integer a un array o arreglo
Integer[] array = new Integer[lista.size()];
lista.toArray(array);
//Recorremos la lista
System.out.println("---recorriendo Lista de numeros---");
for(int i = 0; i < array.length; i++){
System.out.println(array[i]);
}
}
}

Luego de ejecutar el código el resultado sería la misma lista que se definió al inicio del código.

Java: Sumar y restar horas en un Date

Muchas veces es necesario realizar operaciones sobre una fecha. No solamente sumar o restar horas sino también minutos, segundos, semanas, años, meses, etc. Para tal tarea existe en Java la clase Calendar. Esta clase nos permite modificar una fecha (Date) base a nuestro gusto usando los métodos que tiene predefinidos.

En el siguiente código se puede observar los cambios en un objeto del tipo Date usando Calendar.
import java.util.Calendar;
import java.util.Date;
public class DateOperation {
public static void main(String[] args){
//Establecemos la fecha que deseamos en un Calendario
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
//Desplegamos la fecha
Date tempDate = cal.getTime();
System.out.println("Fecha actual: " + tempDate);
//Le cambiamos la hora y minutos
cal.set(Calendar.HOUR, cal.get(Calendar.HOUR)+ 2);
cal.set(Calendar.MINUTE, cal.get(Calendar.MINUTE)- 5);
tempDate = cal.getTime();
System.out.println("Hora modificada: " + tempDate);
//Le cambiamos el mes
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)+1);
System.out.println("Fecha modificada: " + cal.getTime());
//De la misma forma se puede cambiar año, semana, etc
}
}


Al ejecutar el codigo se obtendra el siguiente resultado:

Fecha actual: Sat Jan 24 19:13:29 CST 2015
Hora modificada: Sat Jan 24 21:08:29 CST 2015
Fecha modificada: Tue Feb 24 21:08:29 CST 2015

viernes, 7 de noviembre de 2014

Java: Convertir un arreglo o array a una lista.

En algunos casos puede ser mas conveniente tener nuestros objetos dentro de una lista (List<Object>) que dentro de un arreglo (Object[]). En tal caso puede se puede realizar la conversión de arreglo a lista muy fácilmente.

En el siguiente ejemplo se puede observar como se define un arreglo de Integer (Integer[]) y luego se convierte en una lista de Integer (List<Integer>). Luego esta un ejemplo de como definir una lista de String (List<String>) directamente utilizando el métodos Arrays.asList().

import java.util.Arrays;
import java.util.List;
public class ArrayToList {
public static void main(String[] args){
//Se crea un array de Integers
Integer[] numeros = new Integer[5];
numeros[0] = 0;
numeros[1] = 1;
numeros[2] = 2;
numeros[3] = 3;
numeros[4] = 4;
//Se pasa el array de Integer a una lista
List<Integer> listNumeros = Arrays.asList(numeros);
//Recorremos la lista
System.out.println("---recorriendo Lista de numeros---");
for(Integer numero : listNumeros){
System.out.println(numero);
}
//Otra forma de definir un array
//String[] strings = {"Elemento1","Elemento2","Elemento3"};
//Se puede definir la lista directamente desde el metodo asList
List<String> listString = Arrays.asList("Elemento1","Elemento2","Elemento3");
System.out.println("---Recorriendo lista de strings---");
for(String string : listString){
System.out.println(string);
}
}
}
Luego de ejecutar el código el resultado sería el siguiente.

---recorriendo Lista de numeros---
0
1
2
3
4
---Recorriendo lista de strings---
Elemento1
Elemento2
Elemento3

martes, 4 de noviembre de 2014

Java: Convertir String a Date

Para convertir un objeto del tipo String a Date debemos definir primero el formato en que usa el String a convertir. Para tal caso existe la clase DateFormat que tiene varias implementaciones pero en este caso la veremos con SimpleDateFormat. Estas clases nos permiten convertir un objeto String a Date usando un formato o sintaxis que se adecua a el String que enviamos.

El siguiente ejemplo muestra varios String los cuales deseamos pasar a fecha:

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class StringToDate {
public static void main(String[] args){
//Diferentes fechas a parsear
String stringFechaHora = "2014-10-20 20:10:59";
String stringFecha = "20/10/2014";
String stringHora = "10:20:59";
try {
//Se necesita definir un formato para poder cambiar el String a Date
//En este caso buscará en el String año-mes-dia hora:minutos:segundos
DateFormat fechaHora = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date convertido = fechaHora.parse(stringFechaHora);
System.out.println(convertido);
//En este caso buscará en el String dia/mes/año
DateFormat fecha = new SimpleDateFormat("dd/MM/yyyy");
convertido = fecha.parse(stringFecha);
System.out.println(convertido);
//En este caso buscará en el String hora:minutos:segundos
DateFormat hora = new SimpleDateFormat("HH:mm:ss");
convertido = hora.parse(stringHora);
System.out.println(convertido);
//En este caso buscara hora:minutos:segundos en el String "20/10/2014"
//No lo encntrará y será error por lo que nos mandará al catch.
convertido = hora.parse(stringFecha);
System.out.println(convertido);
} catch (ParseException e) {
System.out.println("Error: " + e.getMessage());
}
}
}

El código anterior nos permite parsear el String buscando por los elementos que se definio en el formato. El resultado del código anterior es el siguiente:
Mon Oct 20 20:10:59 CST 2014
Mon Oct 20 00:00:00 CST 2014
Thu Jan 01 10:20:59 CST 1970
Error: Unparseable date: "20/10/2014"

En la siguiente imagen se pueden observar algunos ejemplos de SimpleDateFormat con sus resultados en String.


martes, 29 de abril de 2014

Java: Agregar imagen a botón

En esta entrada se agregara una imagen a un botón en Java. Existen varias formas pero observaremos como hacerlas usando la clase URL para ubicar el archivo que deseamos. Al final obtendremos algo como esto:

La imagen puede que se un archivo dentro de nuestro proyecto o con una imagen en la web. Luego simplemente se agrega la imagen al botón por medio de su constructor. El siguente script muestra la forma de hacerlo:

ImageIcon dukesIcon = null;
java.net.URL imgURL1 = ImageButton.class.getResource("/img/ReallySmallDuke.png");
//puedes obetner imagenes directamente de la web
java.net.URL imgURL2 = null;
try{
imgURL2 = new java.net.URL("http://openjdk.java.net/images/duke-thinking.png");
} catch (MalformedURLException e){
System.out.println("URL invalida");
}
if (imgURL != null) {
dukesIcon = new ImageIcon(imgURL1); //Usa imgURL1 o imgURL2
} else {
System.out.println("No se pudo cargar la imagen.");
}
JButton jButton = new JButton("Ejemplo", dukesIcon);

Si ponen la imagen dentro de su proyecto es recomendable usar un paquete para guardarlas.

A continuación el código completo de la solución:

import java.awt.BorderLayout;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ImageButton extends JFrame {
public void crearBoton() {
JPanel hPanel = new JPanel();
hPanel.setLayout(new BoxLayout(hPanel, BoxLayout.X_AXIS));
ImageIcon dukesIcon = null;
java.net.URL imgURL1 = ImageButton.class.getResource("/img/ReallySmallDuke.png");
//puedes obetner imagenes directamente de la web
java.net.URL imgURL2 = null;
try{
imgURL2 = new java.net.URL("http://openjdk.java.net/images/duke-thinking.png");
} catch (MalformedURLException e){
System.out.println("URL invalida");
}
if (imgURL != null) {
dukesIcon = new ImageIcon(imgURL1); //Usa imgURL1 o imgURL2
} else {
System.out.println("No se pudo cargar la imagen.");
}
JButton jButton = new JButton("Ejemplo",
dukesIcon);
jButton.setVerticalTextPosition(JButton.BOTTOM);
jButton.setHorizontalTextPosition(JButton.RIGHT);
hPanel.add(jButton);
getContentPane().add(hPanel, BorderLayout.CENTER);
}
public static void main(String[] args) {
mostrarGUI();
}
private static void mostrarGUI() {
ImageButton boton = new ImageButton();
boton.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
boton.crearBoton();
boton.pack();
boton.setVisible(true);
}
}

jueves, 24 de abril de 2014

Java: Archivos Temporales

Un ejemplo de como escribir información en un archivo temporal en Java. No existe diferencia entre lo que se puede escribir en un archivo normal y uno temporal. Generalmente los temporales nos sirven cuando queremos crear archivos en un applet.

En este ejemplo se crea el archivo "archivo.tmp" y se le escribe información de dos formas diferentes.

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class ArchivoTemporal
{
public static void main(String[] args)
{
try{
//Crear un archivo temporal
File temp = File.createTempFile("archivo", ".tmp");
//Le indicamos que lo eleminte cuando se cierre el programa.
temp.deleteOnExit();
//Escribir contenido con BufferedWriter
BufferedWriter bw = new BufferedWriter(new FileWriter(temp));
bw.write("This is the temporary file content");
bw.close();
/*¨--- ALTERNATIVA ---*/
//Escribir el archivo con un InputStream
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("com/pack/yourfile");
FileOutputStream outputStream = new FileOutputStream(file);
int read = 0;
byte[] bytes = new byte[is.available()];
while ((read = is.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
is.close();
outputStream.close();
}catch(IOException e){
e.printStackTrace();
}
}
}