Páginas

23/11/15

JLabel gradient background.

JLabel gradient background.

Realizar JLabel con color de fondo gradiente.




Algo que se ve muy bien en las aplicaciones de escritorio en Java, son los titulos con un color de fondo gradiente (JLabel Gradient Background), para hacerlo solo hay que sobreescribir el metodo void paintComponent(Graphics g) de la clase JComponent, recuerda que esta es la clase base para los componentes SWING.
Para lograr un color de fondo gradiente horizontal:
JLabel gradient background horizontal
JLabel Gradiente
Hay que implementar este codigo:
  JLabel label = new JLabel("...... DatoJava ......") {
   @Override
   protected void paintComponent(Graphics g) {
    Color colorFinal = new Color(255, 1, 1);
    
    Graphics2D graphics2d = (Graphics2D) g.create();
    graphics2d.setPaint(new GradientPaint(0, 0, getBackground(),
      getWidth(), 0, colorFinal));
    graphics2d.fillRect(0, 0, getWidth(), getHeight());
    graphics2d.dispose();
    
    super.paintComponent(g);
   }
  };
    
Para lograr un color de fondo gradiente vertical:
JLabel gradient background Vertical
JLabel Gradiente
Hay que implementar este codigo:
  JLabel label = new JLabel("...... DatoJava ......") {
   @Override
   public void setForeground(Color fg) {
    super.setForeground(fg.RED);
   }

   @Override
   protected void paintComponent(Graphics g) {
    LinearGradientPaint linearGradientPaint = new LinearGradientPaint(
      new Point(0, 10), new Point(0, getHeight()),
      new float[] { 0.240f, 0.250f }, new Color[] {
        Color.LIGHT_GRAY, Color.GRAY });

    Graphics2D graphics2d = (Graphics2D) g.create();
    graphics2d.setPaint(linearGradientPaint);
    graphics2d.fill(new Rectangle(0, 0, getWidth(), getHeight()));
    graphics2d.dispose();

    super.paintComponent(g);
   }
  };
    
Con esto podemos jugar y hacer varias cosas interesantes, por ejemplo:
JLabel gradient background Esquina
JLabel Esquina Gradiente
  JLabel label = new JLabel("...... DatoJava ......") {
   @Override
   protected void paintComponent(Graphics g) {
    LinearGradientPaint linearGradientPaint = new LinearGradientPaint(
      new Point(0, 10), new Point(10, getHeight()),
      new float[] { 0.240f, 0.250f }, new Color[] {
        Color.BLACK, getBackground() });

    Graphics2D graphics2d = (Graphics2D) g.create();
    graphics2d.setPaint(linearGradientPaint);
    graphics2d.fill(new Rectangle(0, 0, getWidth(), getHeight()));
    graphics2d.dispose();

    super.paintComponent(g);
   }
  };
    
JLabel gradient background Linea abajo
JLabel Linea Abajo
  JLabel label = new JLabel("...... DatoJava ......") {
   @Override
   protected void paintComponent(Graphics g) {
    LinearGradientPaint linearGradientPaint = new LinearGradientPaint(
      new Point(0, 25), new Point(0, getHeight()),
      new float[] { 0.240f, 0.250f }, new Color[] {
        getBackground(), Color.RED });

    Graphics2D graphics2d = (Graphics2D) g.create();
    graphics2d.setPaint(linearGradientPaint);
    graphics2d.fill(new Rectangle(0, 0, getWidth(), getHeight()));
    graphics2d.dispose();

    super.paintComponent(g);
   }
  };
    
JLabel gradient background linea abajo gradiente
JLabel Linea Abajo
  JLabel label = new JLabel("...... DatoJava ......") {
   @Override
   protected void paintComponent(Graphics g) {
    Color colorFinal = new Color(0, 0, 0);
    Graphics2D graphics2d = (Graphics2D) g.create();
    graphics2d.setPaint(new GradientPaint(0, 0, getBackground(),
      getWidth(), 0, colorFinal));
    graphics2d.fillRect(0, 25, getWidth(), getHeight());
    graphics2d.dispose();

    super.paintComponent(g);
   }
  };
    

20/11/15

JCalendar Java Swing Tutorial.

JCalendar Java Swing Tutorial

Tutorial del JCalendar con ejemplos, Java Swing.




JUnit Assume Tutorial. Que mejor manera de controlar la fecha que un usuario ingresa que con un calendario en donde con un simple clic ya obtengamos Año, Mes y Día, en Java Swing no trae por defecto un componente que facilite este comportamiento, así que por eso hay que descargar una librería externa llamada JCalendar, dicha librería tiene varias funcionalidades, podemos elegir desde un calendario la fecha completa, la fecha de hoy, elegir una fecha maxima o minima para seleccionar, elegir solo un día, año o mes... En fin en este Tutorial de JCalendar vamos hacer varios ejemplos con las funcionalidades que ofrece utilizando el IDE JBoss Developer Studio o eclipse.


17/11/15

Vaciar DefaultTableModel.

Vaciar DefaultTableModel.

Vaciar DefaultTableModel de un JTable. Quitar datos de un DefaultTableModel.




Cuando tenemos un JTable que utiliza DefaultTableModel muchas veces es necesario vaciar el JTable, en este caso hay que eliminar dato por dato del DefaultTableModel recorriéndolo de esta manera:
 int numDatos = defaultTableModel.getRowCount();
 for (int i = 0; i < numDatos; i++) {
  defaultTableModel.removeRow(0);
 }
 
Primero obtenemos el numero de datos que contiene el DefaultTableModel y después recorremos los datos con un bucle for para ir borrando el primer dato encontrado.

6/11/15

HSQLDB Tutorial

HSQLDB Tutorial.

Tutorial de HSQLDB con Java.




HyperSQL (HSQLDB) es una base de datos relacional, es hecha 100% en Java y corre en la maquina virtual de Java (JVM), hay muchas características que hacen de HSQLDB una base de datos atractiva para los desarrolladores, podemos usarla sin la necesidad de un servidor, para hacer pruebas en memoria utilizando la memoria RAM, es de código abierto, con solo importar el JAR a tu proyecto puedes comenzar a trabajar, bien sea para pruebas o para hacer funcionar tu aplicación en un ambiente de producción, claro que también trae su Database Manager en SWING para hacerle consultas a nuestras tablas por fuera de nuestra aplicación.

En este Tutorial vamos a centrarnos en el funcionamiento de HSQLDB desde Java. Lo que necesitamos es un IDE, en este caso yo utilizo JBoss Developer Studio o lo que es lo mismo eclipse y la última versión de HSQLDB que en este momento es la 2.3.3.


24/9/15

Enviar correo Java. JavaMail.

Enviar correo Java. JavaMail.

Tutorial para enviar correo desde Java. JavaMail.




Enviar correos desde Java es necesario en la mayoría de los sistemas, ya sea para utilizar la funcionalidad para notificar algún suceso, enviar alguna información, enviar correos masivos con promociones a tus clientes, enviar reportes adjuntos a quien sea necesario, puedes utilizar esto para hacer grandes cosas, en este Tutorial para enviar correos con JavaMail vamos hacer varios ejemplos básicos y así tu podrás utilizar la funcionalidad para el propósito que necesites. Para llevar a cabo este tutorial necesitas tener una cuenta de Gmail, desde la cual vamos a enviar los correos.


14/8/15

Diferencia entre override vs overload

Diferencia entre override vs overload

Diferencia entre override vs overload, como implementarlos.




Cuando estamos comenzando a programar en Java tendemos a confundirnos con muchos conceptos ya que algunos son muy parecidos, en este caso vamos hacer una breve explicación para ver cuáles son las diferencias entre override y overload, estos conceptos son súper importantes en la programación orientada a objetos, se utilizan mucho y son una buena práctica de programación.
Para comenzar vamos hablar acerca de sus conceptos, cuando nos referimos a override en Java, estamos hablando de la sobrescritura de un método, para sobrescribir un método en Java tenemos que tener una ClaseHija que herede mínimo un método de una ClasePadre, la necesidad de sobrescribir un método se presenta ya que el hecho de que una ClaseHija herede de una ClasePadre no quiere decir que tienen que hacer lo mismo, para entender mejor, el hecho de que un padre tenga la responsabilidad de trabajar en una empresa no quiere decir que el hijo tenga que trabajar en la misma empresa.
Para aplicar esto en Java necesitamos hacerlo así:
ClasePadre
public class ClasePadre {

 public String quienSoy() {
  return "Soy la clase padre";
 }

}
   
ClaseHija
public class ClaseHija extends ClasePadre {
 
 @Override
 public String quienSoy() {
  return "Soy la clase hija";
 }
   
Como vemos la ClaseHija tiene el mismo método que la ClasePadre con la anotación @Override, lo que nos indica que es un método que no puede cambiar al de la ClasePadre, ni más ni menos parámetros, ya que solo lo estamos sobrescribiendo.

Ahora bien, cuando hablamos de overload en Java, nos referimos a sobrecargar un método, esto lo aplicamos en los constructores de las clases ya que hay veces que necesitamos más de un constructor, y al momento de implementarlo lo que hacemos es ponerle el mismo nombre que los demás pero con distintos parámetros, también es una buena práctica de programación utilizarlo para métodos que en realidad hacen lo mismo, por ejemplo:
Tenemos un método que busca clientes en nuestra base de datos, ese método solo busca clientes por sexo pero necesitamos otro método que aparte de buscar clientes por sexo también sea por edad, y en si los métodos lo que hacen es buscar clientes, así que le ponemos el mismo nombre pero con distintos parámetros, para implementarlo solo necesitamos este bloque de código:
Constructores:
public class Persona {
 public String quienSoy() {
  return "Soy una persona";
 }

 public String quienSoy(String nombre) {
  return "Soy " + nombre;
 }

 public String quienSoy(String nombre, String apellido) {
  return "Soy " + nombre + " " + apellido;
 }
}
  
Metodos:
 public void buscarCliente(String Sexo) {
  // Implementacion
 }

 public void buscarCliente(String Sexo, int edad) {
  // Implementacion
 }

 public void buscarCliente(String Sexo, int edad, String empresa) {
  // Implementacion
 }
  
Como vemos estamos sobrecargando el constructor de la clase Persona, todo esto es muy fácil, poco a poco ve integrándolo en tus aplicaciones, no hay lugar para confusiones ya que los dos conceptos overload y override se aplican de distintas formas y no olvides la mayor diferencia entre los dos conceptos es que no hacen lo mismo, uno sobrescribe un metodo y el otro sobrecarga un metodo, este tema está muy ligado al Polimorfismo en Java, otro de los grandes pilares de la programación orientada a objetos.
Si te ayudo la entrada no olvides compartir el conocimiento aprendido y si tienes alguna sugerencia puedes comentar, suerte!!