Suscribirse al Feed
29Ago

elhackerSearch, una barra de búsqueda para el foro [plug-in para Firefox]

Mi último pasatiempo XDDD

Mas info: http://foro.elhacker.net/index.php/topic,137292.0.html

26Ago

Colaborador de elhacker.net

Jejeje, no suelo postear este tipo de cosas, pero creo que la ocacion lo amerita ya que me han puesto colaborador del Foro de elhacker.net. Es un gran orgullo, y desde acá agradecer a las personas que me dieron la oportunidad. Además que soy el segundo colombiano que es Colaborador en este momento. Gran orgullo…

Saludos!!!

18Ago

Java de fuente abierta no cambiará tu vida

Según Simon Phipps, la decisión de Sun de hacer que Java SE sea de fuente abierta no significará nada para la mayoría de los programadores.

El anuncio de Sun de que Java SE sería de fuente abierta se produce después de una larga espera durante la que se ha criticado a la compañía de no abrir Java lo suficientemente rápido, aunque gran parte de este retraso se ha debido al trabajo legal de Sun por asegurarse de hacer las cosas de forma correcta, según la compañía.

Simon Phipps, dice: “Los desarrolladores que trabajan con Java no están interesados con su interior, aunque tener gente que trabaje con ello debería mejorar su calidad“.

Esto es muy cierto, aunque en mi opinión la mayoría de los aportes van a ser de los usuarios de UNIX, que están casi que totalmente acostumbrados a “cacharrear” con códigos libres. El tiempo dirá… lo único que sé es que Sun hizo muy bien al abrir sus fuentes; ya saben… para no caer en “La trampa de Java

07Ago

BlueJ, que buen IDE

Recientemente estuve probando el BlueJ IDE (Entorno de Desarrollo Integrado) para Java, que está desarrollado 100% sobre Java, lo que lo hace multiplataforma.

Entre sus características más llamativas está, el utilizar muy pocos recursos de la máquina y es muy sencillo de manejar, lo que no sucede con el Sun One Studio de Sun (desarrollado también en Java), o el Eclipse. Si bien estos dos IDE’s mencionados son muy buenos (sobre todo el eclipse), son un tanto complicados de manipular para algunas personas e imposible para otras.

Otra característica relevante es el modelado visual que está implementado en el BlueJ; es un sistema parecido al UML que nos modela de manera gráfica el comportamiento y las relaciones que existen entre clases, todo esto automáticamente mientras codificamos nuestro programa, por ej:

No se puede mostrar la imagen “http://img393.imageshack.us/img393/4233/umlbluejyx0.th.png” porque contiene errores.

Esta herramienta es muy útil, ya que crea modelos altamente intuitivos, lo que hace a nuestro programa muy entendible a terceros.

Tiene incluido además un editor de textos, en el cual se resaltan las palabras reservadas de Java; ya sé: “eso lo hace cualquier IDE decente”, lo verdaderamente interesante es que podemos desarrollar/mantener la documentación interna de nuestro programa a la vez que vamos codificando. El BlueJ nos va desarrollando la documentación del programa utilizando la herramienta javadoc del SDK, y podemos visualizar como va ésta con tan solo click, alternando así entre el editor de código y la interfaz de documentación:

No se puede mostrar la imagen “http://img394.imageshack.us/img394/1766/codigoxz9.th.png” porque contiene errores.No se puede mostrar la imagen “http://img348.imageshack.us/img348/10/interfacewm3.th.png” porque contiene errores.

Además de ello posee un Debugger, y permite crear y analizar objetos sin tan siquiera correr el programa, lo que nos permite analizar su comportamiento y sus datos internos:

No se puede mostrar la imagen “http://img367.imageshack.us/img367/3506/objetosrd7.th.png” porque contiene errores.

La página Web oficial de este excelente proyecto es http://www.bluej.org/. Puedes desde allí descargar la versión más reciente (para Windows, Linux o MacOS), información acerca de sus licencias de uso y/o re/distribución, más información acerca de las demás características y tutoriales de uso (si fuera necesario).

Saludos!!!

02Ago

Botones redondos en Java (y otras formas)

Si ya estás cansado de los típicos botones cuadrados, es hora de cambiar un poco y crear interfaces gráficas más bonitas.

En el ejemplo que mostraré a continuación vamos a crear un botón redondo, pero con unas cuantas modificaciones se pueden crear botones ovaládos (casi lo mismo), rectángulos redondeados, estrellas, entre otros.

Vamos a crear el botón paso a paso…

Lo primero es importar las clases a utilizar:

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;

Para crear ésta clase, vamos a reutilizar la clase JButton para mantener

toda la funcionalidad de un botón, excepto aquello que interesa en este caso particular. Esto nos dá una serie de ventajas, como lo es el sobreescribir los métodos de Jbutton, que de una u otra forma modifiquen las propiedades visuales del botón:

public class BotonRedondo extends JButton

Y creamos dos objetos de la clase Color, que guardarán los valores corespondientes al color del botón, y el color que toma cuando está presionado:

private Color colorFondo,colorPresionado;

El constructor de la clase recibe tres argumentos: el primero de ellos es el rótulo del botón, es decir, el texto que tiene el botón; los argumentos dos y tres reciben objetos Color corespondientes al color del botón, y el color que toma cuando está presionado.

Lo primero que hacemos es invocar al método super(), para pasar al constructor de la superclase (public Jbutton(String label)) el rótulo del botón. Después asignamos los colores respectivos, y en seguida se invoca al método setContentAreaFilled(), que es el encargado de pintar la zona correspondiente al foco del botón, para que en este caso no pinte el fondo del botón.

public BotonRedondo(String rotulo,Color fon,Color pre)
{
super(rotulo);
colorFondo=fon;
colorPresionado=pre;
setContentAreaFilled(false);
}

La primera parte interesante del ejemplo es el método sobrescrito paintComponent(). Este es el método que pinta el botón en el color correspondiente al estado en que se encuentre, y también coloca el rótulo que se haya indicado en el centro del botón. Esto se hace con dos simples if, utilizando el método getModel().isArmed(), para saber si el boton está, o no, presionado.
En él se utiliza el método fillOval() de la clase Gra
phics para pintar un círculo relleno, y acto seguido se hace una llamada al mismo método de la superclase para que pinte el rótulo del botón sobre el círculo:

protected void paintComponent( Graphics g )
{
if(getModel().isArmed())
{
g.setColor(colorPresionado);
}
else
{
g.setColor(colorFondo);
}
g.fillOval(0,0,getSize().width-1,getSize().height-1);
super.paintComponent(g);
}

También se sobrescribe el método paintBorder() para pintar un borde alrededor del botón, llamando al método drawOval() de la clase Graphics:

protected void paintBorder( Graphics g )
{
g.setColor(getForeground());
g.drawOval(0,0,getSize().width-1,getSize().height-1 );
}

El siguiente código interesante es el encargado de responder solamente cuando el usuario pulsa el botón del ratón con el cursor posicionado dentro del círculo, y no hacer nada cuando se hace fuera. Por defecto, un objeto de tipo JButton responde a las pulsaciones de ratón en un área rectangular alrededor del ratón. No obstante, el objeto JButton no tiene idea de la forma real del botón, así que asume que es rectangular. Para indicar al objeto JButton la forma real del botón, es necesario sobreescribir el método contains(). A este método se le pasa una coordenada y responde true si la coordenada está dentro del botón y false en caso contrario.
El método, en este caso concreto del botón redondo, utiliza un objeto Shape (Ellipse2D) para determinar si la coordenada se encuentra dentro o fuera del círculo.

Shape figura;
public boolean contains(int x,int y)
{
if(figura==null!figura.getBounds().equals(getBounds()))
{
figura = new Ellipse2D.Float(0,0,getWidth(),getHeight());
}
return (figura.contains(x,y));
}

El resultado es algo así:

http://img365.imageshack.us/img365/4550/pantallazoxs8.png

Las pruebas respectivas a ésta clase las he hecho en el JDK1.4, pero según algo que leí (no recuerdo donde), en el JDK 1.2.2 hay un pequeño bug en la implementación del objeto JButton,

concretamente en el tratamiento de los eventos de arraste del ratón. En un funcionamietno correcto, si se pulsa dentro del círculo y se arrastra el cursor fuera del perímetro del círculo (manteniendo pulsado el botón) se debería producir un cambio en la apariencia del botón. Al devolver el cursor al círculo, el botón debería recuperar su apariencia inicial, la misma que antes de iniciar el arrastre. Desafortunadamente, el código que implementa esta funcionalidad no llama al método contains(); en su lugar, utiliza los límites del botón (el área más pequeña que contiene al botón). Si utilizas el JDK 1.2.2 puedes observar que si arrastras el cursor lentamente fuera del círculo, pero sin salirse del área rectangular del botón, éste no altera su apariencia. La única solución a este pequeño defecto consiste en implementar toda la funcionalidad uno mismo, pero eso se sale del verdadero objetivo de este artículo.

© 2007 - 2008 Dezinerfolio. Todos los derechos reservados.
Powered by Wordpress. Entradas RSS