Ver Mensaje Individual
  #11 (permalink)  
Antiguo 22/11/2009, 21:45
MRLS
 
Fecha de Ingreso: noviembre-2009
Mensajes: 1
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: LIMPIAR PANTALLA en java????

Hola, veo que el tema está muerto así que me animé a registrarme y ayudar a solucionar esto:

CLS no funciona desde Runtime.getRuntime()exec() (Al menos a mí no me funcionó).

NOTA: Esto está hecho para Windows, no tengo idea de como se pueda adaptar para Linux, si alguién sabe como crear el equivalente de los dll, espero pueda aportarlo.

Yo buscaba una solución para este problema, lo único que se me ocurrió fue crear un método nativo y crear una libreria dinamica para integrar la función clrscr() junto con gotoxy() de C, es algo bastante pesado, pero no difícil:

Primero creas una clase con un método nativo:

package Logica;
public class Nativo
{
public native void imprimeEjemplo();
static
{
System.loadLibrary(/*nombre de la libreria que se utillizará (En este caso se llama imprimePantalla)*/);
}
}

Luego se compila con javac.

Se ejecuta el comando javah Logica.Nativo, esto va a generar un archivo Logica_Nativo:

/* DO NOT EDIT THIS FILE - it is machine generated */

/*tuve problemas con la librerias jni.h, y jni_md.h así que solo la copié desde java/jdk1.6.0_10/include y reemplacé todos los <*.h> por "*.h" excepto aquellos que tenía registrados en la carpeta include de mi compilador de C que en este caso es Borland Turbo C*/

#include "jni.h"
/* Header for class Logica_Nativo */

#ifndef _Included_Logica_Nativo
#define _Included_Logica_Nativo
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: Logica_Nativo
* Method: imprimeEjemplo
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_Logica_Nativo_imprimeEjemplo
(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

Después generamos "manualmente" un archivo .C (en este caso NativoImp.c):

/*tuve problemas con la librerias jni.h, y jni_md.h así que solo la copié desde java/jdk1.6.0_10/include y reemplacé todos los <*.h> por "*.h" excepto aquellos que tenía registrados en la carpeta include de mi compilador de C que en este caso es Borland Turbo C*/


#include "jni.h"
#include "Logica_Nativo.h"
#include "stdio.h"
#include "conio.h"

JNIEXPORT void JNICALL
Java_Logica_Nativo_imprimeEjemplo(JNIEnv *env, jobject obj)
{
clrscr();
gotoxy(0,0);
//printf("Hello world!\n");
return;
}

Después de tener todo esto, ejecuté desde linea de comandos la utilidad BCC32 para generar la libreria dll:

bcc32 -imprimePantalla -Q -IC:\Borland\BCC55\Include;C:\Borland\BCC55\Bin -WD NativoImp.c

Esa es la única forma que pude encontrar para limpiar pantalla desde Java y me funcionó perfectamente.

Espero pueda servirle a otros programadores y DISCULPEN POR REVIVIR UN HILO CON MÁS DE DOS AÑOS DE MUERTO.

Última edición por MRLS; 22/11/2009 a las 21:50