Java Standard Edition

Buenas tardes

Me encuentro aprendiendo las bases de la programación de java.. pues ya casi lo termino pero ahora que ya estoy en arreglos o arrays de todos los avances que he tenido surge mi inquietud de poner en practica los sabes..alguien conoce algún lugar donde pueda encontrar ejercicios ha realizar.
saludos

ejecutar una aplicacion en diferentes SO

Muy buenas comunidad

Estoy desarrollando como prueba una aplicación para ver como se vería al ejecutar en distintos SO es algo muy sencillo tiene un menú un formulario y una barra con iconos lo desarrolle en mac pero el lio esta que al crear el .jar y correrlo en win no salen los iconos del menú ni de la barra, si alguien me puede ayudar le agradecería mucho.

Juego del Gato o Triqui

/*
 *
 * Autor : jl_
 * Fecha de Creacion : 2017_12_12
 *
 */

package triqui;

public class Triqui {

    public static void main(String[] args) {
        triqui.JframeTriqui.main(null);
    }
}
//fin clase Triqui

/*
 * Juego Triqui
 * Autor: jl_
 * Fecha de Creacion : 2017_12_11
 *
 * Notas: el juego del gato o triqui debes compilarlo y agregar en la carpeta dist del jar
 * la carpeta de las imagenes para que las muestre en el JFrame
 * porque utilizo el metodo diractual() para asignar la ruta de las imagenes
 *
*/

package triqui;

import java.io.File;

public class JframeTriqui extends javax.swing.JFrame {

    //declaracion de variables
    public int jugador            = 1;
    public int jugadorant         = 1;
    public int minimonumjugadas   = 0;
    public int maximonumjugadas   = 9;
    public int juegoiniciado      = 0;
    public String [][] configposicionjuego = new String[3][3];
    public int    [][] posicionjugadas     = new int[3][3];
    boolean jl_triqui=false;
    String x=null, y=null;
    String pos0=null, pos1=null, pos2=null;
    int pos0jugador=0, pos1jugador=0, pos2jugador=0;

[Java] Utilizar un ArrayList en un JFrame

/*
 *  -----------------------------------
 *  java mexico
 *  -----------------------------------
 *  Descripcion :
 *  Hola, estoy realizando un pequeño programa, el cual consiste en que, al hacer clic en un panel se dibuje un circulo,
 *  y cuando se vuelva hacer clic, se dibuje otro círculos de otro color, pero sin que se borre el primer circulo,
 *  y así hasta tapizar el panel de círculos de diferentes colores.
 *  Mi pregunta es, ¿como almacenar los círculos en la memoria, para que no se borren?, ya tengo el evento del clic y que
 *  los círculos cambien de color,
 *  he estado investigando como hacer esto, tengo entendido que se puede hacer con un ArrayList o con un Vector.
 *  -----------------------------------
 *  Actualizacion: 2017_12_06
 *  -----------------------------------
 *  Descripcion :
 *  Para el siguiente ejercicio utilizo Vectores. de poscion dinamica...
 *  el vector va aumentando en tamaño o posiciones cada vez que hago clic en el JFrame. v.add()
 *  -----------------------------------
 *  1. import java.util.Vector;                  importar clase

INSERTAR FECHA EN MySQL DESDE JAVA

*  te envio el codigo completo con las nuevas modificaciones compilado en Netbeans 8.2
 *  -----------------------------------
 *  Creo el proyecto con el nombre PruebaFecha
 *  elimino la clase que me crea por defecto. PruebaFecha.java
 *  -----------------------------------
 *  Agrego dos objetos nuevos al proyecto:
 *  ConexionMySQL.java                           conexion base de datos Mysql. test  Tabla. prueba
 *  PruebaFechas.java                             Jframe
 *
 *  ----------------------------------- Jframe
 *  0. mysql-connector-java-5.1.18-bin.jar      copiar la libreria en la carpeta lib de mi projecto ...\lib\
 *  0. jcalendar-1.4.jar                             copiar la libreria en la carpeta lib de mi projecto ...\lib\
 *  0. Agregar las librerias a mi projecto         package Libraries
 *
 *  1. import com.mysql...                               al copiar el metodo PruebaFecha me importa las librerias
 *                                                                    para la conexion a la base de datos Mysql
 *     import javax.swing.JOptionpane            libreria para cuadro de mensajes en pantalla

Comparar fechas

       Un pequeño aporte a Luz Jasso. Mie, 08/02/2017 - 13:26        

        //fechas de ejemplo
        String fecha_ini = "2007-11-08";
        String fecha_fin = null;
        //hojas de ejemplo
        String hr_ini    = "02:00";
        String hr_fin    = "02:30";
        //declaracion de variables
        double diff, min, hrf;
        Date   result1, result2;
       
        SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm");
       
        try {
            result1 = formater.parse(fecha_ini+" "+hr_ini);
            result2 = formater.parse(fecha_fin+" "+hr_fin);
            //
            diff = result2.getTime() - result1.getTime();
            long tiempoMensual =0;
            tiempoMensual += diff;
            min=((diff%3600000)/60000)/60;
            hrf=diff/3600000;            
        } catch (ParseException ex) {
            //Escriba aqui los valores de retorno al ocurrir error
            min=0;hrf=0;
        }

Curiosidades programando Java

Hoy les voy a mostrar algunas curiosidades que se pueden hacer con código Java que puede que algunas sirvan y algunas pues solo para divertirse:

1.- Crear en línea una colección mediante una clase anónima y un bloque inicializador de instancia en lugar de hacerlo con Arrays.asList:

public static void main(String[] args) {
       
        List<Integer> lista = Arrays.asList(7,9,1);
        lista.add(3);
        System.out.println(lista);
}

El inconveniente de usar Arrays.asList es que debido a que la lista se genera desde la raiz de un arreglo, estos por naturaleza tienen un tamaño definido y no puede redimensionarse por lo tanto la lista generada no soporta la operación add o alguna otra que intente modificar el tamaño y devuelve UnsupportedOperationException.

public static void main(String[] args) {
       
        List<Integer> lista = new ArrayList() {{ add(7); add(9); add(1)}};
        lista.add(3);
        System.out.println(lista);
        System.out.println(lista.getClass());
}

Crear sello de CFDI con java

El sello de un CFDI es en realidad la firma electrónica de algunos campos en conjunto(cadena original) del CFDI. La firma digital brinda varios servicios de seguridad:

  • No repudio. La entidad que emite el CFDI no puede rechazar que ella/él lo emitió puesto que en teoría sólo ella/él conoce la llave privada y nadie mas.
  • Autenticación. Al verificar la firma de un CFDI sabemos quién lo emitio ya que se utiliza la correspondiente llave pública del emisor. En Criptografía de llave pública,
    siempre existen un par de llaves, la pública y privada, las cuales sirven para cifrar y descifrar el mensaje.
  • Integridad. Al firmar el CFDI se realiza un subproceso que genera una cadena única, producto del uso de funciones hash. Si se altera el documento posteriormente o al menos los
    campos que se uilizan para generar la cadena original, la cadena única generada debe cambiar completamente y el resultado de la firma será diferente a la original.

Hay dos procesos principales en la generación del sello:

Creación de cadena original CFDI 3.3 con java

Pasos para creación de la cadena original del CFDI 3.3:

1. Tener anotadas las clases con javax, como en el blog.
2. Obtener el archivo cadenaoriginal_3_3.xslt del SAT.
3. Generar la cadena original con el siguiente código:

...
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.util.JAXBSource;
import javax.xml.transform.Result;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
...

JAXBContext jaxBContext = JAXBContext.newInstance("mx.gob.sat.v33"); //El paquete donde se encuentra la clase Comprobante
StreamSource ss = new StreamSource(getClass().getResourceAsStream("/xslt33/cadenaoriginal_3_3.xslt")); //La ruta donde se encuentra el archivo xslt

Generar clases java del CFDI versión 3.3 con comando xjc

Hola,

Les dejo los pasos para la generación de las clases java del CFDI 3.3:

1. Obtener el archivo cfdv33.xsd (http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd)
2. Crear un directorio donde se crearan las clases java (ejemplo: testing)
3. Ejecutar el comando (Se encuentra en la distribución de java, a partir de la versión 6):
xjc -d ./testing/ cfdv33.xsd
4. Los warnings son debido a que esos catálogos son demasiado grandes. Sin embargo, se han generado la mayoría de las clases.
No he podido generar estos enums con esta herramienta (xjc) ya que son demasiado grandes y me sale un OutOfMemoryError. Si desean generar estos enum hice un script en python, espero les sirva.

Distribuir contenido