Capturar webcam con VB.NET

¿Que haremos? Crearemos una aplicación en Visual Studio, la cual hará uso de una webcam para capturar el video en frames independientes y depositarlos en memoria para despues mostralos al usuario a través de un picturebox y un Timer para crear la ilusión de movimiento. ¿Porque lo haremos? Porque es justo y necesario ¿Que necesitamos? [...]

Envío de correo con JavaMail/Netbeans

JavaMail es una expansión de Java que facilita el envío y recepción de e-mail desde código java. JavaMail implementa el protocolo SMTP (Simple Mail Transfer Protocol) así como los distintos tipos de conexión con servidores de correo -TLS, SSL, autentificación con usuario y password, etc [Según SantaWikipedia] ¿Qué necesitamos? JavaMail 1.4.5 Java y Netbeans 6.9 [...]

Proyecto de base de datos Firebird VB

En este proyecto realizaremos una aplicación de base de datos Firebird con el lenguaje de programación de Visual Basic de Microsoft, este proyecto tendrá las funciones básicas de gestión INSERT, DELETE, UPDATE y una interfaz de usuario para utilizarlas. ¿Que necesitamos? Visual Studio 2008 o superior Firebird última versión Firebird ADO.NET Data Provider. Conocimientos básicos [...]

Imprimir imagen con Print

La siguiente clase hace uso de PRINT para imprimir una imagen que se encuentra en un variable de tipo FileInputStream, esta clase a su vez es implementada desde una interfaz que hace fácil su uso, la clase así como todo el proyecto esta comentado. import java.io.File; import javax.print.Doc; import java.io.IOException; import javax.print.DocFlavor; import javax.print.SimpleDoc; import java.io.FileInputStream; [...]

Code Army Bolivia
Mostrando entradas con la etiqueta Java. Mostrar todas las entradas
Mostrando entradas con la etiqueta Java. Mostrar todas las entradas

21/6/15

3 juegos que te harán pensar

JAN29

Google Play cuenta con miles de juegos entretenidos unos gratuitos otros de pagos, a continuación te presento tres divertidos juegos para pasar el rato, todas con versiones gratuitas.

2048 Number Puzzle game
Descripción
2048 es un juego en línea y para móviles creado en marzo de 2014 por el desarrollador web italiano de 19 años Gabriele Cirulli, cuyo objetivo es deslizar baldosas en una cuadrícula para combinarlas y crear una baldosa con el número 2048. Cuando se crea un mosaico de 2048, el jugador gana.
Cirulli creó el juego durante un fin de semana como prueba para determinar si era capaz de programar un juego desde cero, describiéndolo como un clon de la aplicación 1024 de Veewo Studios, tomando la idea de ampliarlo a 2048 basado en el clon 2048 de Sami "Saming" Romdhana, quedando sorprendido cuando el juego tuvo más de 4 millones de visitas en menos de una semana, especialmente debido a que era un proyecto de fin de semana.0 Cirulli, en una entrevista, declaró que "fue una manera de hacer pasar el tiempo".
Descargar

Logic Maze
Logic Maze es un juego de puzzle para poner a prueba el razonamiento lógico y el coeficiente intelectual. El objetivo es simple: para resolver el nivel en el que sólo hay que llegar a la estrella. Para lograr esto se puede empujar y rotar los bloques, la definición de una estrategia.
Ponga a prueba su razonamiento lógico!
DESCARGAR

Lightbot One Hour Coding

Enseña programación a los niños de la manera más divertida.
Lightbot One Hour Coding está destinado a introducir a los niños que no tienen experiencia alguna programación, y es para todas las edades también. pueden jugar, divertirse y aprender la lógica de programación real.
Lightbot One Hour Coding es un juego puzzle de programación: un juego de puzzle que utiliza la mecánica de juego que están firmemente arraigados en los conceptos de programación. permite a los jugadores ganan una comprensión práctica de los conceptos de control de flujo básicos como la secuenciación de instrucciones, procedimientos y bucles, con sólo guiar a un robot con comandos para iluminar azulejos y resolver los niveles.
DESCARGAR

continue reading

29/9/13

Multiplicación de matrices con applet

JAN29

Un aporte de un amigo guatemalteco Luis CMurga, nos deja a disposición un proyecto java/netbeans para multiplicar matrices gráficamente utilizando la tecnología de los applets.

Originalmente desarrollado con java 7, funciona perfectamente en java 6 con minúsculas modificaciones, ademas hace uso de la librería AbsoluteLayout, cuenta con dos clases cada una con una manera diferente de introducir los datos.




Dar las gracias por el aporte a:
Autor: Luis CMurga
Facebook: https://www.facebook.com/luis.cmurga

Descargar proyecto AQUI

continue reading

4/7/13

Detecctar y aplicar Look and Feel

JAN29

Un aporte del amigo Cesar Ramos para detectar y aplicar Look and Feel a una aplicación hecha en Netbeans.

"Este proyecto nos permite apreciar las propiedades de lookAndFeel de java, esta clase, aplica cambios en nuestro frame con configuraciones predeterminadas las cules invocamos segun nuestra necesidad"


El proyecto comprende dos clases para detectar y aplicar el look and feel.

Clase main.java

/*
 * esta es la clase principal donde recibimos las clases lookAndFeel de
 * la clase detectorLookAndFeel y los agregamos a un combobox
 * para que se apliquen los cambios cuando hagamos click
 * en el boton btn1 apreciando los cambios
 * de manera inmediata
 */
package look;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

public class Main{
    String dir;
    JButton btn1;
    JComboBox cmb1;
    JFrame ventana;
    Main(){
        ventana = new JFrame();
        ventana.setTitle("bienvenido");
        ventana.setSize(600, 600);
        ventana.setDefaultCloseOperation(ventana.EXIT_ON_CLOSE);
        ventana.setLayout(new FlowLayout());
        ini();
        ventana.setVisible(true);
    }
    public void ini(){
        componentes();
        ventana.add(btn1);
        ventana.add(cmb1);
    }
    public void componentes(){
        btn1= new JButton("cambiar apariencia");
        btn1.setSize(100, 20);
        DetectorLookAndFeel detec = new DetectorLookAndFeel();
        detec.nombresDeClasesLAF();
        cmb1 = new JComboBox();
        cmb1.setSize(100, 20);
        for(int i=0; i< detec.nombresDeClasesLAF().length; i++){
            cmb1.addItem(detec.nombresDeClasesLAF()[i]);
        }
        agregarEventos();
    }
    public void agregarEventos(){
        btn1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if(e.getActionCommand().equals("cambiar apariencia")){
                    try {
                        UIManager.setLookAndFeel(cmb1.getSelectedItem().toString());
                    SwingUtilities.updateComponentTreeUI(ventana);
                    } catch (Exception ex) {
                    }
                }
            }
        });
    }
    public static void main(String[] args){
        Main ok = new Main();
    }
}

Clase DetectorLookAndFeel.java

/*
 * /
 * esta clase es para detectar los looks and feels instalados en nuestro sistema
 */

package look;

import javax.swing.UIManager;

public class DetectorLookAndFeel {
    String[] clases;
    DetectorLookAndFeel()  {
        UIManager.LookAndFeelInfo[] nop;
        nop=UIManager.getInstalledLookAndFeels();
        clases = new String[nop.length];
        int i=0;
        while(i<nop.length){
            System.out.println(nop[i].getClassName().toString());
            clases[i]=(nop[i].getClassName().toString());
            i++;
        }
    }
    public static void main(String[] args){
        DetectorLookAndFeel ok = new DetectorLookAndFeel();
    }
    public String[] nombresDeClasesLAF(){
        return clases;
    }
}

Descargate el archivo AQUI :)

continue reading

11/1/13

Vulnerabilidad en navegadores con Java 7 Zero-Day

JAN29

Una nueva falla de seguridad en Java 7 pone en alerta mundial a todos los usuarios que tengan instalado la version de java 7 update 10.

Pero como diría el chapulin colorado, "Que no cunda el pánico", ya en varias páginas se dice que se debe desintalar java para protegerse, nada más falso, es como querer desinstalar windows porque el Word se colgó un par de veces.

Esta vulnerabilidad se dice que se activo el 1 de enero de 2013 (Zero-Day ) y que que aprovechado por piratas informáticos (hacker) para hacer de las suyas, pero primero vamos a informarnos un poco sobre esta vulnerabilidad.

¿Que tenemos en riesgo?
Cuando se tiene un agujero de seguridad de este tipo, tenemos en riesgo la perdida de información, daño del equipo, perdida del control del propio equipo infectado,

¿Como nos infectamos?
En el caso de Java, nos infectamos cuando ingresamos a una web que hace uso de applets, son esas ventanas que aparecen pidiendo autorización para ejecutar una aplicación, pero cuidado, en algunos casos el sitio infectado puede ejecutar el applets en segundo plano sin solicitar permiso alguno.
Así también, existen otros métodos de infección como son la ingeniería social los cuales tratan de atraer tu atención para que hagas clic en un enlace infectado, por ejemplo en facebook cuando ves un titular sensacionalista del tipo "Shakira desnuda", "No lo puedo creer que este vivo!" , "Hugo Chavez esta muerto, te muestro la foto", etc NO HAGAS CLIC, la curiosidad mato al gato.

¿Como nos protegemos?
Es erróneo el rumor de tener que desintalar completamente java para protegerse, la cosa no va por ahi.

Como cualquier otra vulnerabilidad de cualquier software que funcione bajo la web (java , flash, pdf, word , etc )  estos necesitan de un software llamado "plugins" que se instala en los navegadores (plugin = software que se instalan en el navegador para ampliar funciones de contenido interactivo, vídeo, música, programas web, 3d, etc. ) y sin el cual el software externo no puede funcionar.

Entonces, para protegernos de esta vulnerabilidad, lo que debemos hacer es "desactivar o desintalar el PLUG-IN de java", solo eso, no se debe desintalar la maquina virtual java (JVM) , a menos claro que sea uno de esos paranoicos que cree en el fin del mundo.

Dependiendo del navegador que utilice lo que debe hacer es:

Navegador CHROME

En la barra de direcciones del navegador, teclea "chrome://plugins/" sin comillas y presiona enter, te aparecerá una lista de todos los plugins que tengas instalado, busca el plugin de java 7, si lo tienes debes "inhabilitarlo", si tienes una versión anterior, osea la 6 puedes respirar tranquilo.

Navegador FIREFOX
En Firefox ve al menú HERRAMIENTAS -> COMPLEMENTOS , y cuando te muestre la ventana de complementos, escoge PLUGINS y busca el plugin de java 7, podrás ver que firefox ya a dejado también una alerta para versiones anteriores a Java, si bien java 6 tenia graves fallas fueron corregidas y claro como nada es perfecto seguirá teniendo fallas actualmente, como cualquier otro software.

Navegador Internet Explorer.
"No uses Internet Explorer en ninguna de sus versiones" :)

Navegador SAFARI
Ve a EDICION -> PREFERENCIAS elige la pestaña SEGURIDAD y desmarcas la opcion "Enable Java".


Información Extra.

Un nuevo troyano llamado Mal / JavaJar-B se ha encontrado que explota una vulnerabilidad en Java de Oracle 7 y afecta incluso a la última versión del entorno de ejecución (7u10).

El exploit ha sido descrito por Sophos como un ataque de día cero (Zero-Day) ya que se ha comprobado que se utiliza activamente en el malware antes de que los desarrolladores han tenido la oportunidad de investigar y parchar. El exploit se encuentra actualmente en revisión en la National Vulnerability Database y se ha dado un número de ID CVE-2013-0422, donde todavía se describe como relativamente desconocido (Original).

ACTUALIZADO 14/01/2013

Oracle saco un parche Java SE 7 Update 11 Released para el error de seguridad Security Alert CVE-2013-0422 y recomienda actualizar a java 7 update 11 inmediatamente.

Lo sospeche desde en principio :)

continue reading

25/7/12

Agenda Personal Portable Gratis

JAN29



Completa agenda para organizar tu vida personal y/o profesional, si te olvidas de acontecimientos familiares, citas de trabajo, salir con el/la novi@ o simplemente quieres ir al cine con los amigos, ahora con esta útil herramienta, podras crear y tener a la vista una actividad pendiente en todo momento, ademas de que esta agenda cuenta con una alarma que te informara cada cierto tiempo de que cita tienes cerca. Khipu tambien cuenta con una pequeña agenda de contactos.

Ademas esta agenda es completamente portable por lo que podras llevarla y ejecutarla desde tu memoria USB en cualquier pc que tenga la Maquina Virtual Java. No te preocupes porque esta agenda es fácil de utilizar con interfaz muy intuitiva y en español. ¿Qué más se puede pedir?
  • Requiere: Maquina Virtual Java
  • Portable: Si
  • Ocupa: 6.4 MB
  • Funciona en Sistema Operativo: WinXP/2000/NT/Vista/7
  • Licencia: Freeware
  • Idioma: Español
Más información en la página del autor jc-Mouse

Enlace de descarga directa Khipu Agenda Personal Free Edition

continue reading

11/4/12

Captura de pantalla Java/Robot

JAN29


Este es un pequeño proyecto de un capturador de pantalla escrito en lenguaje java con la ayuda del IDE de Netbeans version 6.9, utilizando la clase Robot de java.


La clase que hace todo el trabajo (de la captura) es la clase capture.java, el código de esta clase es:

package jcapture;
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;
/**
 * @web http://www.jc-mouse.net
 * @author Mouse
 */
public class Capture {    
   
   private BufferedImage image;   
   private FileNameExtensionFilter filter = new FileNameExtensionFilter("Archivo de Imagen","jpg");
   private JFileChooser fileChooser = new JFileChooser();

   /* CAPTURA LA PANTALLA */
   public void captureScreen(Point p , Dimension screenSize)  {
        try {
            //crea el area de captura
            Rectangle screenRectangle = new Rectangle(p, screenSize);
            Robot robot = new Robot();
            image = robot.createScreenCapture(screenRectangle);            
            Guardar_Foto();
        } catch (Exception ex) {
        }
    }

    private void Guardar_Foto(){
       String file=null;
       fileChooser = new JFileChooser();
       fileChooser.setFileFilter(filter);
       //fileChooser.setCurrentDirectory(new java.io.File("e:/capturas/"));
       int result = fileChooser.showSaveDialog(null);
       if ( result == JFileChooser.APPROVE_OPTION ){
                file = fileChooser.getSelectedFile().toString();
                guardar_imagen(file + ".jpg");
        }
    }

  /* guarda la imagen en disco*/
    private void guardar_imagen(String f){
        try {            
            //se escribe en disco en formato JPG
            ImageIO.write(image, "jpg", new File(f));
            JOptionPane.showMessageDialog(null, "Captura guardada en disco");
 } catch (IOException e) {
            JOptionPane.showMessageDialog(null, "Error: no se pudo guardar la imagen");
 }
   }

}

Un poco de explicación sobre esta clase, cuenta con el método captureScreen el cual recibe dos parámetros de entrada, un Point (origen X,Y)  y Dimension (ancho, alto) que forman un rectangulo imaginario que sirve como parametro para tomar la captura de pantalla, a su vez este metodo hace uso del metodo privado Guardar_Foto(), este método te mostrara una ventana de diálogo "Guardar como..." para que indiques el lugar y el nombre del archivo a guardar y ya para terminar el método "guardar_imagen" que creo que no hace falta indicar para que sirve :)

Bueno, todo esto lo puedes ver en el siguiente video, así queda más claro:




Descargate el proyecto desde el siguiente enlace (jCapture)

continue reading

20/3/12

Tojorí - Crear app de bd java/netbeans facilmente

JAN29


Esta librería llamada "Tojorí" (bebida boliviana hecha a base de maiz) te ayuda a crear aplicaciones de base de datos java con MySQL utilizando el IDE de Netbeans todo desde el editor visual del mismo, muy similar a las herramientas de diseño que cuenta Delphi para interactuar con las bases de datos.

Tojorí cuenta con varios controles swing para la creación de interfaces de usuario:


  • DBComboBox: swing para mostrar registros.
  • DBConnection: componente para conectarse con la base de datos.
  • DBDateChooser: control parecido a JCalendar, más sencillo, pero igual de eficaz.
  • DBNavigator: Es una barra de controles que permite realizar las operaciones de insert, update, delete hacia la base de datos.
  • DBTable: control swing para mostrar registros.
  • DBTextArea: Swing para agregar textos largos 
  • DBTextField: Caja de texto


Puedes ver como funciona en los siguientes videos:

Primera Parte

Segunda Parte

Puedes encontrar mayor información en este post:

Libreria Tojorí Java/MySQL

continue reading

4/3/12

Procedimientos almacenados java, mysql, netbeans

JAN29


Si quieres aprender un poco sobre lo que son los procedimientos almacenados en MySQL, como crearlos, como ejecutarlos y como eliminarlos, todo esto trabajando desde consola y con comandos SQL, puedes ver el siguiente video tutorial.


Si lo prefieres y necesitas un poco más de información, puedes ver el post completo en:


Ademas, si quieres utilizar procedimientos almacenados de MySQL desde java, necesitas leer este tutorial:


Espero les sirva :)

continue reading

9/2/12

Proyecto Java con MVC

JAN29


Proyecto completo Java implementando el patrón MVC (Modelo, Vista y Controlador) con Base de datos MySQL, manejo de reportes (iReport),formularios MDI con imagen de fondo, desarrollado en Netbeans 6.9.

Puedes ver de que trata el proyecto en el siguiente video
 

Quieres saber mas

continue reading

30/1/12

j2Button componente swing para java

JAN29


j2Button componente swing para java que te permite colocar texto en dos lineas separadas cada una con su propio color de texto, tamaño y tipo de fuente.

No hay mucho que decir sobre este componente, es sencillo de usar y hace uso de una de las propiedadades de JButton el cual acepta codigo HTML y CSS del tipo:

<html> 
<style type="text/css"> 
.estilo1{font-family:Bradley Hand ITC;font-weight:bold; font-size:24px;color:rgb(51, 51, 51);} 
.estilo2{font-family:Rod;font-weight:bold; font-size:12px;color:rgb(102, 102, 102);} 
</style> 
<span class="estilo1">Boton Fachero</span><br/> 
<span class="estilo2">Problem?</span> 
</html> 

Este código se coloca en el TEXT del Jbutton, pero claro, el objetivo de este componente "j2Button", es ahorrarte el trabajo de escribir ese pedazo de código y hacerlo todo de una forma manual y sencilla desde el editor grafico de Netbeans.

Pues nada, eso es todo si quieres probar el componente puedes bajartelo desde el siguiente enlace con manual incluido:
http://link.jc-mouse.net/?id=J2BTNCSSOK

Si te sirve con un gracias me conformo :)

continue reading

14/1/12

Componente jcList: Lista con imagenes en java netbeans

JAN29


"jcList", componente beans para Java extendido de un jList el cual te permite manejar imagenes para los elementos de una lista. Te permite personalizar el componente com imagenes externas de tipo JPG, PNG o GIF de cualquier tamaño y tambien cambiar el tipo de color de Fuente.

Componente sencillo pero que ayuda en gran medida a mejorar la interfaz de usuario y hacerla mas agradable para el usuario final. En el siguiente video puede ver como es utilizado desde una interfaz grafica como Netbeans.

Este componente es gratuito y puedes utilizarlo en tus proyectos las veces que quieras, no debes pagar nada por el, pero si este componente te sirvio de alguna manera y quieres contribuir de alguna forma para el desarrollo de nuevos componentes........ya sabes que hacer $$$$$$$$$$$$$$$$ ;) no me enojo en serio :)

Descargate el componente y su manual de uso desde el siguiente enlace:

http://link.jc-mouse.net/?id=LSTBEANS69

Si encuentras algún bug, dimelo para que pueda arreglarlo los pronto posible

bye

continue reading

26/12/11

Patrón MVC en Java con Netbeans

JAN29

El patrón MVC (Modelo, Vista, Controlador), es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz que ve el usuario de la logica del negocio en tres componentes distintos. Es más frecuente en aplicaciones Web que en aplicaciones de escritorio, sin embargo es aplicable tambien a este, sin ningun problema, Java ya contaba hace rato con Observer y Observable, herramientas que nos ayudan a la interacción entre la interfaz y el modelo, sin embargo, el ejemplo que dejamos a continuación no hace uso de estas herramientas.

La descripción del patrón MVC es:

  • Vista (View): Representa la interfaz de usuario y todas las herramientas con las cuales el usario hace uso del programa.
  • Modelo (Model): Es donde esta toda la lógica del negocio, la representación de todo el sistema incluido la interacción con una base de datos, si es que el programa asi lo requiere.
  • Controlador (Controller): Este componente es el que responde a la interacción (eventos) que hace el usuario en la interfaz y realiza las peticiones al modelo para pasar estos a la vista.
Aún no esta del todo claro, pero con el siguiente ejemplo, lo comprenderemos mejor.
El programa que realizaremos, es una aplicación trivial y sencilla, sin embargo nos ayudara a comprender mejor cual la forma de trabajo de este matrón MVC en Java, utilizaremos para esto, el IDE de Netbeans.

PROYECTO
1. Crea un nuevo proyecto en netbeans, para este ejemplo, el proyecto se llama "jc_mvc_demo". Crea una estructura de paquetes (Controller, Model, View), hacemos esto para separar cada componente, ser más organizados. Debes tener algo como esto.
Como puedes observar, mantenemos el paquete default junto al Main.java que nos crea netbeans, este main es el que nos servira como nuestro index.php de nuestra aplicación, nuestro "lanzador".

2. Empecemos creando la lógica de la aplicación, crea una nueva clase en el paquete Model, llamalo "modelo.java" y añade el siguiente codigo:


01 package model;
02 /**
03  * @web http://jc-mouse.blogspot.com/
04  * @author Mouse
05  * En esta clase se guarda la lógica del sistema, para este sencillo ejemplo
06  * consiste en una SUMA
07  */
08 public class modelo {
09     //Variables
10     private int valor1=28;
11     private int valor2=69;
12     private int total = sumar();
13 
14     public modelo(){}
15 
16     public void set_valor1(int val){
17         this.valor1=val;
18     }
19 
20     public int get_valor1(){
21         return this.valor1;
22     }
23 
24     public void set_valor2(int val){
25         this.valor2=val;
26     }
27 
28     public int get_valor2(){
29         return this.valor2;
30     }
31 
32     public int sumar(){
33         this.total =  this.valor1 + this.valor2;
34         return this.total;
35     }
36 
37     public int get_total(){
38         return this.total;
39     }
40 
41 }

Como vemos, nuestra modelo es sencillo, es nada más que la suma de dos valores enteros, con sus respectivos metodos. continuemos.

3. Diseñemos ahora la interfaz de usuario, nuestra VISTA.
Añade un JFrame al paquete VIEW, llamalo "vista.java", OJO los recuadros marcados con rojo, son los componentes que tendran interacción con el modelo, asi que para evitar confuciones, es mejor renombrarlos, coloca los nombres tal como se ven en la imagen de abajo.
Netbeans, al añadir objetos a nuestro JFrame, automaticamente los coloca como PRIVATE, debemos cambiar esto, para ello selecciona el objeto "vtxt1" y ve asus propiedades, en la pestala CODIGO, elige el campo MODIFICADORES DE VARIABLE, en la ventana que sale, cambia el atributo PRIVATE, por PUBLIC y dale a aceptar. Repite esta acción para todos los objetos que estan marcados con rojo en la imagen anterior.

3. Ahora continuamos con el CONTROLADOR de nuestra aplicación, crea una clase "controlador.java" en el paquete CONTROLLER, el codigo que debes colocar, es:


01 package controller;
02 
03 import java.awt.event.ActionEvent;
04 import java.awt.event.ActionListener;
05 import model.modelo;
06 import view.vista;
07 /**
08  * @web http://jc-mouse.blogspot.com/
09  * @author Mouse
10  */
11 public class controlador implements ActionListener{
12 
13     private vista vista;
14     private modelo modelo;
15 
16     //En el constructor inicializamos nuestros objetos y tambien
17     //añadimos el ActionListener al boton "cmdsumar" de la VISTA
18     public controlador( vista vista , modelo modelo){
19         this.vista = vista;
20         this.modelo = modelo;
21         this.vista.cmdsumar.addActionListener(this);
22     }
23 
24     //Inicia los valores del jFrame VISTA con los datos del MODELO
25     public void iniciar_vista(){
26         vista.setTitle( "Demo MVC * jc-mouse.net" );
27         vista.setLocationRelativeTo(null);
28         vista.vtxt1.setText( String.valueOf(modelo.get_valor1()) );
29         vista.vtxt2.setText( String.valueOf(modelo.get_valor2()) );
30         vista.vtxt3.setText( String.valueOf(modelo.get_total()) );
31     }
32 
33     //La accion del boton de la VISTA es capturado, asi como los valores de
34     //los jtextbox, entonces se realiza la funcion SUMAR y se actualiza
35     //el jtextbox correspondiente al resultado
36     public void actionPerformed(ActionEvent e) {
37         modelo.set_valor1( Integer.valueOf( vista.vtxt1.getText() ) );
38         modelo.set_valor2( Integer.valueOf( vista.vtxt2.getText() ) );
39         modelo.sumar();
40         vista.vtxt3.setText( String.valueOf(modelo.get_total()) );
41     }
42 
43 }

Explicación: nuestra clase controlador, implementa el ActionListener, esto para responder desde esta clase, los eventos realizados desde la interfaz (VISTA), ademas en el constructor de la clase, vemos que se pasan como parametros, la clase VISTA y la clase MODELO,nuestra clase ademas cuenta las funciones, INICIAR() la cual inicializa los valores de la interfaz, como ser el atributo titulo del JFrame, posicionamiento en pantalla, valores iniciales de los jtextbox, etc. tambien tenemos el método actión performed el cual capura el evento realizado desde la interfaz, en nuestro ejemplo es solo un CLICK EN EL BOTON DE MENU CMDSUMAR, obtiene los datos correspondientes e invoca al modelo para procesar la información y obtener una respuesta. Pues bueno, eso es todo, fijese como la interfaz para llegar al modelo, pasa por el controlador y visceversa, cuando el modelo necesita mostrar un dato, pasa por el controlador hasta llegar a la vista, esto claro no es una regla, puedes buscar en google y encontraras varias variaciones de este modelo.

4. Para terminar debemos implementar todo esto en nuestro main.java:


01 package jc_mvc_demo;
02 
03 import controller.controlador;
04 import model.modelo;
05 import view.vista;
06 /**
07 *  @web http://jc-mouse.blogspot.com/
08  * @author Mouse
09  */
10 public class Main {
11     
12     public static void main(String[] args) {
13 
14         //nuevas instancias de clase
15         modelo modelo = new modelo();
16         vista vista = new vista();        
17         controlador controlador = new controlador( vista , modelo );
18         //se inicia la vista
19         controlador.iniciar_vista();
20 
21         vista.setVisible(true);
22 
23     }
24 
25 }

Ejecuta el programa para terminar.
El patrón MVC, nos permite cambiar la interfaz de usuario (VISTA), sin tocar en lo absoluto el MODELO de la aplicación, y realizar pequeños cambios en el controlador, minimos cambios, como podemos observar en la imagen superior, tenemos la interfaz 1, la cual creamos en este tutorial, y ademas una segunda interfaz, totalmente distina, sin embargo funciona bajo el mismo MODELO.

Descarga  el ejemplo e investiga como cambiar la interfaz1 a la interfaz2

El proyecto completo, esta "AQUI"


Suerte :)

continue reading

24/9/11

El Laberinto del Miedo

JAN29

Aquí tenéis el famoso juego de la niña del exorcista en su versión "El grito", también llamado juego del laberinto o The Maze, que pone a prueba vuestra habilidad y reflejos al tener que pasar el punto por los caminitos, ayudados sólo del ratón. Al final, hay una recompensa muy buena que seguramente disfrutaréis con gran agrado. y ole!!!



¡TE RETO A JUGARLO!

Bajatelo desde aqui: http://link.jc-mouse.net/?id=GAMLAB2TWS, es GRATIS!

Si eres programador y te intereza el codigo fuente, sigue el siguiente enlace: El Laberinto proyecto completo

continue reading

8/8/11

Crear instaladores para programas hechos en Java

JAN29

Con este post doy inicio a una serie (espero no muy larga) de tutoriales para la creacion de instaladores para programas hechos en Java con/sin base de datos, se hara uso de varios programas externos a java asi como diferentes lenguajes de programacion para ayudarnos en la creacion de los instaladores, sin más dejo el primer videotutorial.

1. Creacion de un instalador simple sin base de datos con WinRar

Se requiere:
  • Programa Winrar
  • Resources Hacker
  • Editor de imagenes (Photoshop,Gimp,etc)
  • Editor de iconos o si ya los tienes un icono

Continuando con esta serie de tutoriales para la creacion de instaladores java, algo que muchos preguntan es en la creacion de ejecutables java, pues bien, nosotros no haremos eso, no porque sea imposible o no se pueda hacer, sino porque es un trabajo complejo y que creo que no va con la esencia misma del lenguaje Java, pero lo que si haremos es en crear ejecutables para los programas java, mas propiamente para los archivos ejecutables *.JAR, estos exes más  conocidos como lanzadores (launch), permiten ejecutar al cliente  los programas java como cualquier otro programa de windows, ya que de eso se trata, de facilitarle la vida al usuario final. En internet puede encontrase cientos de estos lanzadores, entre los mas conocidos y gratuitos tenemos JavaExe, launch4J, pero como programadores, tambien es necesario saber crear uno mismo sus herramientas, en esta ocasion, utilizaremos VB.NET de Visual Studio para crear nuestro lanzador. sin mas charla, los tutoriales.

2. Crear EXE para Java con JavaExe

 3. Crear ejecutables con Launch4J

4. Crear lanzadores java con Visual Basic .NET

Ahora la cosa se va poniendo buena, en el siguiente tutorial crearemos un instalador bastante profesional para programas java con Visual Studio, aun no implementamos la base de datos, paso a pasito ;)
5. Crear instalador Java con Visual Studio

6. Crear CD Autoejecutable con Java para Java


Pues si señores, continuando de tiempito, estaba ocupado :) sepan disculpar, ahora dejo a consideraciones de la comunidad de programadores un proyecto para crear un CD autoarrancable o autoejecutable, como quieran llamarlo, al estilo de AutoPlayCD pero todo escrito en Java, ademas con esta aplicacion, tambien se puede instalar MySQL y restaurar la base de datos, pero antes realiza una busqueda en el sistema para verificar si se tiene o no instalado este programa, esta creo es la opcion que mas pedian, asi que sin más dejo un video de lo que construiremos

Esta página se ira actualizando a medida que se desarrollen los tutoriales
[Ultima actualización 03/09/2011]

continue reading

3/7/11

Escalar imagen en java

JAN29

Aplicacion en java que permite redimensionar una imagen manteniendo las proporciones de la misma, realizada con Netbeans 6.9

Proyecto, explicación y código de la aplicación: http://www.jc-mouse.net/java/escalar-imagen-en-java

continue reading

29/5/11

Esteganografia LSB en Java - [Proyecto Completo]

JAN29

Mensajes ocultos utilizando el método de Inserción en el bit menos significativo
(Least Significant Bit Insertion)
El método de Inserción en el Bits Menos Significativo, llamado también método de Sustitución,  consiste en reemplazar el Bits menos significativo de los pixeles de una imagen digital  por otro Bits del mensaje que se quiere ocultar.
¿Cuál es el Bits menos significativo?
El Bits menos significativo o LSB (Abreviatura en ingles) de un numero binario, es el bits que se encuentra al extremo derecho de este

¿Y qué es un pixel?
Un píxel o pixel es la menor unidad homogénea en color que forma parte de una imagen digital, ya sea esta una fotografía, un fotograma de vídeo o un gráfico.

Dicho de otra forma, si se aplica zoom a una imagen digital, se podrá observar que está formada por varios puntos (cuadrados) de colores, esta sucesión de pixeles en forma de una matriz es lo que conocemos como imagen, cada uno de estos pixeles está formado por 3 bytes cada uno de estos almacena un color primario Rojo, Verde, Azul (RGB en ingles) y la variación entre ellas forman los distintos colores que podemos ver en pantalla.

¿Y cómo funciona el método de sustitución?
Si quisieramos esconder la letra A=01000001 que  esta formado por 8 bits, dentro la imagen de abajo, necesitarios utilizar 3 pixeles de la imagen, cada pixel tiene 3 bytes para cada color RGB

Primero debemos extraer los 3 primeros pixeles de la fotografía

Y aplicamos la sustitución LSB de cada número binario por cada bit del carácter “A” (nuestro mensaje)

Como se observa se ha sustituido cada bits LSB (recuadro rojo) por cada bits del carácter “A” formando nuevos valores para los colores RGB, estos nuevos colores no cambian mucho con respecto al original y así no pueden ser distinguidos por el ojo humano, pasando inadvertidos.

Se utilizaron 8 bits LSB en total, uno por cada bit del mensaje, los que no se utilizan, se dejan como están.

Para este método de sustitución LSB puede emplearse cualquier formato de imagen fuente (*.JPG, *.PNG, *.BMP) pero este debe ser guardado en formato *.BMP (destino), esto porque los otros formatos tienden a perder información con la compresión, BMP no tiene compresión por eso son más grandes, este método además tiene la ventaja de no alterar el tamaño de la imagen. El tamaño del mensaje que se desee ocultar, dependerá del tamaño de la imagen, se utiliza un promedio de 3 pixeles por carácter lo que en una imagen de 200x200 pixeles nos da para almacenar 13000 caracteres, suficientes creo para guardar mucha información.


Proyecto completo: Codigo Fuente, Tutorial, Demo, Aplicación portable + Bonus
Click para descargar

¿Bonus?
Si, como me gusta fomentar la investigación, dejo en un rar una sopresa (solo para entendidos), esta con contraseña, asi que el que quiera la "llave" ya sabe donde buscar

continue reading

Post recomendado