miércoles, 9 de enero de 2013

Apletviewer width vrs. JApplet setSize



1) applet sin setSize:

        El contenido del applet se acopla a la ventana del appletviewer

2) applet setSize menor que el appletviewer width:
      
        La ventana del appletviewer se acopla a las dimensiones especificadas en el método setSize

3) applet setSize mayor que el appletviewer width:

        La ventana del appletviewer toma las medidas especificadas en el método setSize, pero únicamente muestra el contenido del applet hasta la longitud especificada en su parámetro width

Para hacer que el contenido del applet(según este sitio) coincida exactamente con la ventana del appletviewer es posible que el applet lea los valores width y height de la etiqueta applet usando la función getParamenter y luego pasar estos valores a la función setSize:
  
 int ancho = 0, alto = 0;
 try{
  ancho = Integer.parseInt(getParameter("width"));
  alto = Integer.parseInt(getParameter("height"));
 }
 catch(NumberFormatException e){
  showStatus("Error en los valores width & height");
 }        
 
 setSize(ancho, alto);  


Situación al usar appletviewer. Error NoClassDefFoundError

Al usar el appletviewer:

                appletviewer MaximoCD.html

me arrojaba este error:

  java.lang.NoClassDefFoundError: MaximoCD (wrong name: Ejercicios/ventiocho/MaximoCD)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:197)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:146)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    at sun.applet.AppletClassLoader.loadCode(AppletClassLoader.java:608)
    at sun.applet.AppletPanel.createApplet(AppletPanel.java:798)
    at sun.applet.AppletPanel.runLoader(AppletPanel.java:727)
    at sun.applet.AppletPanel.run(AppletPanel.java:380)
    at java.lang.Thread.run(Thread.java:636)


Bien, la causa de esto es que en la clase original(MaximoCD) había declarado un package

    package Ejercicios.ventiocho;

lo cual hacía que se buscara la clase en un paquete(o estructura de directorios) 
    
   Ejercicios/ventiocho

dentro del mismo directorio donde reside el archivo html, arrojándome el errror anteriorLa solución fue eliminar la declaración

   package Ejercicios.ventiocho;

de la clase original.

martes, 8 de enero de 2013

Mejor algoritmo para números primos en código java


public void determinarPrimo(int numero){

           int contador = 2;

           while(numero % contador != 0)
                    contador++;

            if(contador == numero)
                areaSalida.append(numero + " es primo");

}

lunes, 7 de enero de 2013

Manjear caracteres de escape junto con un método drawString de Graphics

Como el método drawString de Graphics no maneja caracteres de escape como "\n",  "\t", etc., a la hora de querer imprimir un string que contenga éstos caracteres de escape a través de un método drawString se debe de hacer como sigue a continuación, pero antes el planteamiento:

Problema: No se pueden imprimir el caracteres de escape de nueva línea (\n) de un string con el método drawString de Graphics.

Causa: El método drawString no maneja caracteres de escape.

Solución: Dividir el string en partes usando el caracter de escape  de nueva línea(\n) como separador.

Código en Java:

    for(String asteriscos : texto.split("\n") ){
            g.drawString(asteriscos, x, y);
            y+=25;
        }


Donde el texto original seria la variable texto, es decir, la que contiene el caracter de escape "\n".