Administradores de esquemas

 Los administradores de esquemas se proporcionan para ordenar los componentes de la GUI en un contenedor, además estos proporcionan las herramientas básicas de distribución visual.

 En esta parte veremos 3 tipos de esquemas con sus respectivos ejemplos en codigo para descargar.

 comenzamos por el mas basico de todos

FlowLayout

             Es el predeterminado para java.awt.Applet, java.awt.Panel y javax.swing.JPanel.

Coloca los componentes secuencialmente, de izquierda a derecha, en el orden en que se agregaron, tambien es posible especificar el orden de los componentes.

 

FlowLayout

 

BorderLayout

             El Administrador de esquemas BorderLayout ordena los componentes en regiones (NORTH,SOUTH,EAST,WEST,CENTER).

            BorderLayout puede mostrar hasta 5 componentes, uno por region. El componente que se coloca en cada region puede ser un contenedor, al cual se pueden adjuntar

otros componentes.

Administradores de esquema - BorderLayout

 

 GridLayout

             El administrador de Esquemas GridLayout divide el contenedor en una especie de grilla o cuadricula de manera que los componentes pueden acomodarse en filas y columnas, es importante recalcar que todo objeto componente en un objeto GridLayout tiene la misma anchura y altura, y cada objeto se agrega empezando en la celda superior izquierda.

 

Administradores de esquema - GridLayout

para terminar dejo el link para descargar los 3 ejemplos aquí explicados..

Saludos a todos.
Buen Fin de semana xD.

 – [ DESCARGAR CODIGO ] –

 

 

Interfaces de escucha de eventos MouseListener y MouseMontionListener para manejar eventos de Mouse estos eventos pueden capturarse para cualquier componente de GUI que se derive de java.awt.Component.

Metodos de la interfaz MouseListener

public  void mousePressed(MouseEvent evento)

                es llamado cuando se oprime un botón en el Mouse.

 public  void mouseClicked(MouseEvent evento)

                Se llama cuando se oprime y se suelta un botón en el mouse.

 public  void mouseReleased(MouseEvent evento)

                Ocurre cuando se suelta un botón en el Mouse.

public  void mouseEntered(MouseEvent evento)

                Ocurre cuando el cursor entra dentro de los límites del componente.

 
public  void mouseExited(MouseEvent evento)

                Ocurre cuando el cursor sale dentro de los límites del componente.

 
Metodos de la Interfaz MouseMontionListener

 public  void mouseDragged(MouseEvent evento)

ocurre cuando el boton del raton se oprime mientras el cursor esta sobre un componente y se mueve mientras se mantiene presionado.

 public  void mouseMoved(MouseEvent evento)

                Ocurre al moverse el raton cuando se encuentra sobre un componente.

 Además de estos métodos tenemos la interfaz MouseWheelListener para el uso de la rueda giratoria del Mouse. 

mouseWheelMoved(MouseWheelEvent e)

La clase MouseWheelEvent es una subclase de MouseEvent y contiene los métodos que permiten al manejador de eventos obtener la información necesaria acerca de la rotación de la rueda giratoria.

Un mouseEvent contiene la información del Mouse que ocurrió esto incluye coordenadas x e y de la ubicación de donde ocurrió el evento.
 

 A manera de detalle y usamos el evento  setBackground(Color.GRAY)  de getContentPane (osea getContentPane().setBackground(Color.GRAY);    ) para resaltar cada captura de evento.

Es bastante simple. 

A continuacion mustro una imagen de la aplicacion que dejo a disposicion aplicando lo explicado.

  Evento de Mouse en java

 

eso es todo por hoy saludos!

 

Para terminar la semana dejo estos 2 Breves ejemplos donde se hace uso de los componentes de interfaz gráfica estos son JCheckBox y JComboBox

Simplemente agregamos un comentario antes de mostrar el primer codigo fuente;
la clase JCheckBox y JradioButton son subclases de JToggleButton como se puede ver en la imagen

EventoJButton - Jerarquia de Botones swing

Primer Aplicacion. Evento JCheckBox

Como muestra la imagen de abaj, es un sencillo texto dentro de un textbox en donde tenemos 3 casillas de verificacion(JComboBox) en donde a medida que se las va tildando  nuestro texto cambia de estilo, bien simple de manera que se entienda el concepto.

[_   BAJAR CODIGO FUENTE DEL PROGRAMA  _]

La siguiente imagen muestra un  Screenshot de la aplicacion.

EventoJCheckBox - aplicacion

En nuestro Segundo Ejemplo hacemos uso del componente de interfaz gráfica JComboBox, o muchas veces llamado lista desplegable, simplemente mostramos una imagen en un label  cada elemento seleccionado en nuestro selector desplegable.

para ello tenemos una serie de imagenes dentro de una carpeta, estas imagenes las cargaremos en un arreglo  

   private String dir = “images/”; //directorio donde se encuentran las imagenes
private String nombres[] =   { dir+”numUno.gif”,dir+”numDos.gif”,dir+”numTres.gif”,dir+”numCuatro.gif”,dir+”numCinco.gif” };  //arreglo de imagenes

y con ellas llenamos un arreglo de iconos de la siguiente manera

   private Icon iconos[] = { new ImageIcon(nombres[0]),
new ImageIcon(nombres[1]),
new ImageIcon(nombres[2]),
new ImageIcon(nombres[3]),
new ImageIcon(nombres[4]) };

 Luego en el manejo del evento de nuestra lista desplegable preguntamos si es seleccionada y seteamos en nuestro label el elemento del arreglo iconos en donde guardamos las imagenes(en realidad guardamos los nombres a donde apuntan las imagenes) quedaria de la siguiente manera

            if (e.getStateChange()== ItemEvent.SELECTED)
lbletiqueta.setIcon(iconos[cboxImagenes.getSelectedIndex()]);

Bueno brevemente eso es todo a continuacion mostramos una imagen de la aplicacion terminada y su codigo fuente listo para compilarse.

           [ DESCARGAR EL CODIGO FUENTE DEL PROGRAMA ]

Evento JComboBox

Eso es todo por hoy, saludos.

Manejo de Eventos JButton [JAVA]

 

Manejador de eventos por dentro

*Como se registra un manejador de eventos

Esto es: indicarle a la ventana a qué función tiene que llamar cuando se produzca un evento.

//registramos un manejador de eventos

ManejadorEventos manejador = new ManejadorEventos();

//asociamos el manejador a nuestros campos de texto1

txtCampo1.addActionListener(manejador);

//asociamos el manejador a nuestros campos de texto2 y asi…

txtCampo2.addActionListener(manejador);

txtCampo3.addActionListener(manejador);

txtJPass1.addActionListener(manejador);

Todo componente de la GUI soporta varios tipos de eventos, incluyendo eventos de mouse, eventos de tecla y otros mas. Cuando ocurre un evento, este se despacha solamente a los componentes de escucha de eventos del tipo apropiado.

Esta es la jerarquia de de herencia de los botones de swing

EventoJButton - Jerarquia de Botones swing

 

A continuacion dejo un ejemplo muy basico donde aparecen 2 botones uno es el clasico osea solo texto y el otro es un boton mas avanzado en donde mostraremos una imagen que acompaña al texto y otra imagen que aparecera cuando se posa el cursor sobre el boton.

En el ejemplo aparece el uso de el evento setRolloverIcon que es heredado de AbstractButton este evento nos permite incluir una imagen para ser mostrada cuando el usuario coloque el Mouse sobre el boton en cuestion

Imagenes del programa

EventoJButton - Botones RollOver
efecto RollOver

EventoJButton - Botones
evento Click

 

:: Descargar el Codigo del Programa ::

 

eso es todo por hoy saludos xD.

 

 

Manejo de eventos en Java

 Las GUI están controladas por eventos, alguno de estos eventos son, mover el Mouse, seleccionar o escribir en un campo de texto, hacer click  en un botón, ya sea en la pantalla o en el Mouse etc..

Cuando ocurre una interaccion con el usuario, se envia un mensaje al programa. La informacion de los eventos de la GUI se almacena en un objeto de la clase que extiende a AWTEvent.

 Los Tipos de eventos del paquete java.awt.event se utilizan con componentes de AWT y de Swing. Los tipos de eventos adicionales, especificos para SPNG, se declaran en el paquete javax.swing.event.

 El mecanismo de eventos consta de tres partes:

  • El origen del evento
  • El objeto del evento
  • El componente de escucha del evento

 Origen del evento:Es el componente de la GUI especifico con el cual interactua el usuario.

Objeto del evento:Es el encargado de encapsular la informacion acerca del  evento que ocurrio. Esta informacion incluye una referencia al origen del evento  y cualquier informacion especifica del evento que pueda ser requerida por el objeto escucha.

Objeto escucha:Es un objeto que recibe la notificación del origen del evento cuando este ocurre;en efecto “escucha” a la espera de un evento y se ejecuta en respuesta a ese evento.

 El programador debe realizar dos tareas clave para procesar un evento de interfaz grafica de usuario en un programa. 

  1. Primero debe registrar un componente de escucha del evento para el componente de la GUI que se espera que genere ese evento.
  2. Segundo: debe implementar un manejador para ese evento

 Básicamente un componente de escucha para un evento GUI es un objeto de una clase que implementa a una o mas de las “interfaces de componentes” de escucha de eventos de los paquetes java.awt.event y javax.swing.event.

     Cada interfaz de escucha de eventos especifica uno o mas métodos manejadores de eventos que deben declararse en la clase que lo implemente (que implemente dicha interfaz) esto es porque la interfaz al ser abstracta y como toda clase abstracta debe implementar todos sus métodos.

     En el momento que ocurre un evento, el componente de la GUI con el que el usuario interactuó notifica a sus componentes de escucha registrados, llamando al método manejador de eventos apropiado de cada componente de escucha

A continuación se muestra un breve ejemplo usando JTexField y JPasswordField en donde manipulamos campos de texto.

Estas son algunas imagenes de la aplicacion

 

EventoJTextField - Campo1

EventoJTextField - Campo2

EventoJTextField - Campo3

EventoJTextField - Campo4

 

 —– [ DESCARGAR EL CODIGO FUENTE ] -—–

 

 

Bueno eso es todo por hoy, saludos terricolas, buen findesemana XD

Introduccion a JAVA2D Parte I

En este primer tutorial introductor a la API Java2D  comenzaremos conociendo varias de las herramientas que nos ofrece java2D, el control de relleno de las figuras y selector de colores.

  • La clase Color contiene metodos y constantes para manipular los colores.
  • La clase Font contiene metodos y constantes para manejar tipos de letras.
  • La clase FontMetrics contiene metodos para obtener información sobre los tipos de tetras.
  • La clasePolygon contiene metodos para crear poligonos.
  • La clase Graphics contiene metodos para dibujar cadenas, lineas, rectangulos y demas figuras.

Introduccion java2D - Sistema de Coordenadas

La clase Component es la superclase para muchas de las clases en el paquete java.awt. El metodo paint de Component toma un objeto Graphics como argumento. El sistema pasa este objeto al metodo Saint cuando se requiere una operación de pintar (paint) para un componente.

            public void paint(Graphics g) 

El método paint nos suministra el contexto gráfico g, un objeto de la clase Graphics con el cual podemos dibujar en el área de trabajo del componente llamando desde dicho objeto g a las funciones definidas en la clase Graphics.

CONTROL DE COLORES

La clase Color declara los metodos y las constantes para manipular los colores en un programa de Java. A continuación se detallan algunos metodos de Graphics que son especificos para los colores.

public Color (int r,int g, int b)
            Crea un color basado en componentes rojo, verde y azul,  como enteros 0 a 255.

public Color (flota r, flota g, flota tb)
            Crea un color basado en componentes rojo, verde y azul,  como valores de punto flotante de 0.0 a 1.0.

public int getRed()
            Devuelve un valor entre 0 y 255 el cual representa el contenido rojo.

public int getGreen()
            Devuelve un valor entre 0 y 255 el cual representa el contenido verde.

public int getBlue()
            Devuelve un valor entre 0 y 255 el cual representa el contenido azul.

public Color getColor()
            Devuelve un valor entre 0 y 255 el cual representa el color actual.

public void setColor( Color c )
            Establece el color actual.

Para mostrar un mensaje, llamamos desde el objeto g a la función miembro drawString, el primer argumento es el string que deseamos mostrar, y los dos números indican las coordendas de la línea base del primer carácter.

g.drawString(“RGB actual: “+ g.getColor(),130,105);   

 Introduccion java2D - MostrarColor

                         << DESCARGAR CODIGO FUENTE >>

 

 Nuestro primer ejemplo nos muestra lo explicado hasta el momento, nos encontraremos con cuadro de dialogo que contiene 3 rectangulos rojo,verde y azul respectivamente y a su derecha su color en RGB.

SELECTOR DE COLORES

 El Paquete javax.swing proporciona el componente de la GUI JColorChooser  para permitir a los usuarios de la aplicación seleccionar colores.

En el siguiente ejemplo muestra como al oprimir un boton se dispara el evento JColorChooser el cual nos permitira por medio de una interface seleccionar el color, al oprimir aceptar en el cuadro de dialogo el color de fondo de la aplicación cambiara y nos informara por medio de un label su valor RGB.

             JColorChooser seleccionaColor = new JColorChooser();
            Color = seleccionarColor.showDialog(parent,titulo,color inicial);

Introduccion  Java2D - JColorChooser

 

                                            << DESCARGAR CODIGO FUENTE >>

 

 

Las expresiones regulares son una secuencia de caracteres y símbolos que definen un conjunto de cadenas.

Son útiles para validar la entrada y asegurar que los datos estén en un formato específico. Por ejemplo un código postal debe coincidir de 5 dígitos, un apellido debe comenzar con mayúscula, un número telefónico debe tener solo números y así.
La clase String proporciona varios métodos para realizar operaciones con expresiones regulares siendo la mas simple la expresión de concordancia.
El método matches recibe una cadena que especifica la expresión regular, y compara el contenido del objeto String que lo llama con la expresión regular. Devuelve un valor Bolean indicando si hubo concordancia o no.
Una expresión regular consiste de caracteres literales y símbolos especiales.

En la siguiente figura se muestran algunas clases predefinidas de caracteres que pueden usarse con las expresiones regulares.
Expresiones regulares - Clases predefinidas de caracteres

 

 

 

 

Una clase de carácter es una secuencia de escape que representa a un grupo de caracteres. Un carácter de palabra es cualquier carácter alfanumérico o guión bajo, un carácter de espacio en blanco es un espacio, tabulador, retorno de carro o nueva línea y un digito es cualquier carácter numérico.

Para explicar lo aprendido dejo una simple aplicación que consiste básicamente en un validador de entrada o Frame en donde el usuario ingresa los datos en el formulario y

Al hacer clic en aceptar, el programa comprueba que no haya campos vacíos, si no hay campos vacios el programa informara al usuario tal evento, si no hay campos vacíos se pasa a validar la entrada del usuario.

Se validara por ejemplo en el primer caso el Nombre (que es igual a la validación de apellido ) usando el patrón ( “[A-Z][a-zA-Z]*”) en este caso le estamos diciendo que la entrada para ser valida debe tener el primer carácter en mayúscula [A-Z] y que los siguientes caracteres pueden ser cualquier carácter tanto minúscula como mayúscula [a-zA-Z] con el asterisco final le estamos diciendo que los siguientes caracteres van a ser iguales a la expresión previamente indicada, ósea la expresión que esta entre corchetes directamente al lado izquierdo del asterisco. Finalmente se podría indicar si quisiera una validación mas sobre la cantidad mínima de caracteres esperados para que nunca ingresen nombres de 2 o 3 letras por poner un ejemplo así pues solo nombres de 4 letras o superiores podrán ser ingresados, quedaría algo asi..

(“[A-Z][a-zA-Z]*\\D{3}”))

Como ven se ha agregado el signo de escape ‘\’ seguido de la clase predefinida ‘\D’ y a su vez seguido de un numero entre corchetes que indica la cantidad mínima de caracteres del tipo previamente ingresado (en este caso [a-zA-Z]).

Aclarado este punto y para que quede claro voy a presentar el ejemplo de una validación típica de Nombre mostrando lo explicado hasta recién.

//si el formato del nombre es invalido mostramos el mensaje
if (!txtNombre.getText().matches(“[A-Z][a-zA-Z]*\\D{3}”))
JOptionPane.showMessageDialog(this,”Nombre invalido”);

Finalmente un programa como de costumbre a manera de ejemplo y aplicando todo lo previamente explicado.

Expresiones Regulares - Validador de Frames

 

<< Descargar Codigo Fuente >>

 

eso es todo por hoy saludos, cualquier duda consulten.

Trabajando con cadena de caracteres

Para obtener la longitud, número de caracteres que guarda un string se
llama a la función miembro length.

String letras = “La casa del lago, estaba vacía”;
int longitud= letras.length();

Localización de caracteres y subcadenas

Podemos conocer si un string comienza con un determinado prefijo, llamando al método startsWith,
que devuelve true o false, según que el string comience o no por dicho prefijo

            String letras = "La casa del lago, estaba vacía";             
	boolean resultado= letras.startsWith("La");

En este ejemplo la variable resultado tomará el valor true.
De modo similar, podemos saber si un string finaliza con un conjunto dado de caracteres,
mediante la función miembro endsWith.

            String letras = "La casa del lago, estaba vacía";
boolean resultado= letras.endsWith("vacía");

¿Como buscar un carácter o un conjunto de caracteres en una cadena

A continuación recorreremos los métodos indexOf y lastIndexOf que ofrece nuestra clase String,
para buscar un carácter o una cadena de letras que inicializaremos a continuación.
Si se quiere obtener la posición de la primera ocurrencia de la letra ‘a’, se usa la función indexOf.

   String letras = "La casa del lago, estaba vacía";
salida += "\n\n la quinta letra a esta en el índice  " + letras.indexOf('a');        

Si se quiere obtener la posición de la quinta ocurrencia de la letra ‘a’,
se usa la función indexOf de 2 argumentos“indexOf(‘a’,20) “ el primer argumento es la representación
entera del caráctery el segundo es el índice inicial por el que debe empezar a buscar.

	String letras = "La casa del lago, estaba vacía";	 
	salida += "\n\n la quinta letra a esta en el índice  " + letras.indexOf('a',20);        

Otra versión de indexOf busca la primera ocurrencia deun substring dentro del string.

        int valor=10;           // luego convertimos el número en string y se lo asignamos a un string 
	String dies = new String(String.valueOf(valor));
   	salida = "\n el valor de \"dies\" es:  " + dies.toString();

La clase String proporciona versiones de valueOf para convertir los datos primitivos: int, long, float, double.
Esta función se emplea mucho cuando programamos applets, por ejemplo, cuando queremos mostrar
el resultado de un cálculo en el área de trabajo de la ventana o en un control de edición.

Borrando espacios en blanco

Cuando introducimos caracteres en un control de edición a veces es inevitable que aparezcan
espacios ya sea al comienzo o al final. Para eliminar estos espacios tenemos la función miembro trim

            String str="  12 ";             String str1=str.trim();

Bueno para demostrar todo esto les dejo un programita muy sencillo aplicando lo explicado hasta aquí.

>>Descargar fuente.<<

Cadenas y caracteres en Java [tutorial]

Como buscar un arreglo ordenado mediante la búsqueda binaria


Si el arreglo esta ordenado, podemos utilizar la técnica de búsqueda binaria de alta velocidad.El algoritmo de búsqueda binaria elimina la mitad de los elementos que se van a buscar en el arreglo, después de cada comparación.El algoritmo localiza el elemento medio del arreglo y lo compara con la clave de búsqueda.

Si son iguales, la clave de búsqueda binaria reduce el problema a buscar en la mitad del arreglo ordenado. Si la clave de búsqueda es menor que el elemento medio del arreglo, se buscara en la primera mitad del arreglo; en caso contrario, se buscara en la segunda mitad. La búsqueda continua hasta que la clave de búsqueda sea igual al elemento medio de un subarreglo, o hasta que el subarreglo consista en un elemento que no sea igual a la clave de búsqueda.

En el peor de los casos, para buscar un arreglo ordenado de 1023 elementos se requerirán solamente 10 comparaciones si se utiliza una busqueda binaria. Al dividir varias veces 1024 ente 2 ( ya que de cada comparación se elimina la mitad del arreglo) se producen estos valores 512,256,128,64,32,16,8,4,2,1. El numero 1024 (2¹º) se divide entre solo 10 veces para obtener el valor de 1. La división entre 2 es equivalente a una comparación en el algoritmo de busqueda binaria. Por lo tanto, un arreglo de 1.048.676 (2²º) elementos requiere un máximo de 20 comparaciones para encontrar la clave y un arreglo de mil millones de elementos requiere un máximo de 30 comparaciones para encontrar la clave.

Para demostrar lo anteriormente explicado dejo un ejemplo practico como siempre, espero les sea de utilidad

Saludos a todos y felices fiestas. xD

————————————————————————————————–

 

Capturas del programa.

buscar un arreglo ordenado mediante la búsqueda binaria (scr1)

buscar un arreglo ordenado mediante la búsqueda binaria (scr2)

 

DESCARGAR EL FUENTE

 

 

 

[Desarrollo en J2ME] – 194x.

Hace tiempo me puse a investigar nuevas tecnologías, ahí encontré java, el mismo me brindaba todas las herramientas que necesitaba para desarrollar aplicaciones móviles, este pequeño desarrollo cuenta con una pantalla spashScreen(“loading”), una pantalla de bienvenida en donde iría el logo presentación del juego, y finalmente el juego, en este caso el juego en cuestión es un clásico 194x.
Le faltan varios detalles, pero lo dejo en disponibilidad de cualquiera que quiera modificarlo y mejorarlo, cualquier consulta que tengan con gusto responderé.

Cuando yo me inicie en esto no encontré por ningún lado los recursos que necesitaba para crearlo es por eso que me decidí a colaborar con aquellos que recién se inician en este mundo de j2me.

Para el desarrollo use NetBeans 5.5.1 el mismo cuenta con un emulador de la interfase de la aplicación.

Aquí dejo un par de imágenes de la aplicación..

Read the rest of this entry »