Añadir lineas a un panel de texto JTextPane

Por Saiyine  el 2006-06-22 12:06:59 - Secciones:  JAVA  - Enlace permanente: 684

Los paneles de texto de Java parecen carecer de un método para añadir lineas de texto sueltas. Por ello, os propongo este pequeño truco para añadir texto a un JTextPane: leer el contenido previamente e incluirlo en la expresión.

JTextPane tp;
...
tp.setText("Esta linea se añadirá por delante del texto.\n"+tp.getText());

Observad el uso de caracteres escapados, en este caso un salto de linea, y la clave del ejemplo, el empleo del método .getText() del propio JTextPane para leer el contenido y volver a volcarlo junto con el nuevo texto.

Zona comentarios

Buscar cadenas en un texto

Por Saiyine  el 2006-06-22 12:07:57 - Secciones:  JAVA  - Enlace permanente: 685

Buscar cadenas en un panel de texto de Java es tan sencillo como aprovechar el método indexOf de las cadenas, para lo cual tenemos que convertir primero el JTextPane en una cadena con .getText():

JTextPane tp;
...
if (tp.getText().indexOf(cadena)>-1)
{
// Hacer algo si la cadena está en el panel de texto
}

ACTUALIZACION 20060905: Una corrección, y un ejemplo, a ver si así se ve mejor.

class cadenas {
    public static void main(String[] args)
   {
        String path = new String("Hola que tal");
        System.out.println("Hola = " + path.indexOf("Hola"));    // Hola = 0
        System.out.println("ola   = " + path.indexOf("ola"));      // ola   = 1
        System.out.println("Jola = " + path.indexOf("Jola"));     // Jola = -1
    }
}

Zona comentarios

Salida en modo texto se mantiene en la misma linea

Por Saiyine  el 2006-10-25 02:57:15 - Secciones:  JAVA  - Enlace permanente: 714

A veces, necesitamos que la salida de nuestro programa modo texto se muestre siempre en la misma linea, y que solo avance cuando se llegue a un determinado punto de ejecución, a lo pkzip.

Esto es fácil de lograr usando los comandos de consola, en este caso, el de volver al inicio de linea sin avanzar.

        for (int i=0; i<10; i++)
        {
                System.out.print("this is line " + i + "\r");
        }
        System.out.println();   

Zona comentarios

Leer datos de una URL en java

Por Saiyine  el 2007-03-05 04:19:46 - Secciones:  JAVA  - Enlace permanente: 751

Leer los datos contenidos en un fichero de la Web en Java es bastante fácil. Simplemente, crea un objeto URL (recuerda importar java.io.* para tenerlo disponible para tu código) y envialo como entrada al típico InputStreamReader.

¡Una cosa a tener en cuenta es que no parece soportar autentificación HTTP!

import java.net.*;
import java.io.*;

public class URLReader
{
  public static void main(String[] args) throws Exception
  {
    URL pagina = new URL("http://www.google.com/");
    BufferedReader in = new BufferedReader
         (new InputStreamReader(pagina.openStream()));
    String entrada;
    while ((entrada = in.readLine()) != null)
      System.out.println(entrada);
    in.close();
    }
}

Zona comentarios

Saber si un fichero existe, o no, en Java

Por Saiyine  el 2007-05-31 03:31:21 - Secciones:  JAVA  - Enlace permanente: 765

El siguiente código os dirá si un fichero dado existe en el sistema.

import java.io.*;

public class ExisteFichero
{
  public static void main(String args[])
  {
    if (new File(args[0]).exists())
    {
      System.out.println("El fichero existe.");
    } else
    {
      System.out.println("El fichero NO existe.");    
    }
  }
}

Zona comentarios

Alto y ancho de la pantalla en Java

Por Saiyine  el 2007-06-11 02:25:34 - Secciones:  JAVA  - Enlace permanente: 769

Obtener el ancho y alto de la pantalla en Java es bastante fácil, solo tenemos que acceder al toolkit que estemos usando en nuestro programa, es decir, a la libreria que se encarga de dibujar los botones, ventanas y demás en la pantalla.

...
   int ancho = java.awt.Toolkit.getDefaultToolkit().getScreenSize().width;
   int alto = java.awt.Toolkit.getDefaultToolkit().getScreenSize().height;
...

Zona comentarios

Añadir lineas a un fichero de texto en Java

Por Saiyine  el 2007-06-11 03:16:37 - Secciones:  JAVA  - Enlace permanente: 770

Añadir lineas a un fichero de texto es tan sencillo como el código que os presento a continuación:

        try
        {
                BufferedWriter out = new BufferedWriter(new FileWriter("fichero", true));
                out.write("linea de texto");
                out.close();
        } catch (IOException e)
        {
        }

Zona comentarios

Ejecutar en segundo plano usando hilos (threads)

Por Saiyine  el 2007-07-03 03:16:44 - Secciones:  JAVA  - Enlace permanente: 778

En Java, existen tres formas principales para ejecutar tareas en segundo plano: heredar la clase Thread, implementar la interfaz Runnable y la clase TimerTask.

Este primer ejemplo muestra como usar la herencia de la clase Thread. Copiad al portapapeles, pegad en vuestro editor, y comprobar lo sencillo que es crear hilos de ejecucion alternativos al principal de vuestro programa. Observad como se ejecutan concurrentemente de manera que sus salidas se mezclan en pantallas, probablemente será más evidente conforme mayor sea el bucle de ejecución.

public class ThreadEjemplo extends Thread
{
    
    public ThreadEjemplo(String str)
    {
        super(str);
    }
    
    public void run()
    {
        for (int i = 0; i < 100 ; i++)
            System.out.println(getName());
        System.out.println("Fin " + getName());
    }
    
    public static void main (String [] args)
    {
        new ThreadEjemplo("A").start();
        new ThreadEjemplo("B").start();
        new ThreadEjemplo("C").start();
        new ThreadEjemplo("D").start();
    }
}

Zona comentarios

Ejecutar en segundo plano usando hilos (runnable)

Por Saiyine  el 2007-07-05 02:33:01 - Secciones:  JAVA  - Enlace permanente: 781

En Java, existen tres formas principales para ejecutar tareas en segundo plano: heredar la clase Thread, implementar la interfaz Runnable y la clase TimerTask.

En este segundo ejemplo os muestro la segunda variante, que es la implementación de la interfaz Runnable, que es practicamente igual que heredar de Thread. ¿Que sentido tiene, entonces? Pues muy sencillo, en Java solo se puede heredar de una clase, así que si nuestra tarea hereda de alguna otra, tendriamos que descartar el método de la clase Thread. Pero podemos, además de heredar, implementar una interfaz, y ahí entra Runnable.

El código es muy sencillo, y muy similar al ejemplo de Thread. Observad que usamos implement y no extends en la llamada de la clase.

public class ThreadSample implements Runnable
{
    public void run()
    {
        for (int i = 0; i < 5000 ; i++)
            System.out.println(i + " " + Thread.currentThread().getName());
        System.out.println("End of thread " + Thread.currentThread().getName());
    }
    public static void main (String [] args) {
        new Thread ( new ThreadSample() , "+").start();
        new Thread ( new ThreadSample() , "-").start();
        new Thread ( new ThreadSample() , ":").start();
        new Thread ( new ThreadSample() , "*").start();
    }
}

Zona comentarios

Controlar la prioridad de los hilos en Java

Por Saiyine  el 2007-08-23 12:13:41 - Secciones:  JAVA  - Enlace permanente: 788

Con el siguiente código podremos controlar la prioridad con que corren los hilos, o threads, de nuestros programas Java.

    Thread me = Thread.currentThread();
    me.setPriority(Thread.MIN_PRIORITY);

Para el ejemplo hemos usado la prioridad minima, es decir, que cualquier otro proceso tenga preferencia en la cpu antes que nuestro hilo. Para ver otros niveles de prioridad, consulta el objeto Thread con un inspector de objetos, o usa un entorno de programacion que muestre los metodos disponibles conforme se escribe, como Eclipse.

Pero hay un problema, la maquina virtual de Java tiene 10 niveles de prioridad que no tienen porqué coincidir con los del sistema operativo sobre el que está corriendo. Por ejemplo, Windows NT tiene siete, y no es nada raro que un sistema Unix tenga cientos. Por ello, lo mejor es utilizar solo MAX_PRIORITY, NORM_PRIORITY y MIN_PRIORITY en su codigo.

Zona comentarios

Jerarquia de llamada en Java

Por Saiyine  el 2007-10-20 06:37:48 - Secciones:  JAVA  - Enlace permanente: 795

Con el siguiente código podreis conocer la jerarquia de llamada de vuestro código en tiempo de ejecución, con la única limitación de que solo funciona a partir de Java 5:

public class Llamadas
{
        static public void fin()
        {
                StackTraceElement trace[] = Thread.currentThread().getStackTrace();
                for (StackTraceElement St : trace)
                {
                        System.out.println(St);
                }
        }
       
        static public void salto()
        {
                fin();
        }
       
        public static void main(String[] args)
        {
                salto();
        }
}

Deberia devolver algo como...

java.lang.Thread.getStackTrace(Unknown Source)
pruebas.Llamadas.fin(Llamadas.java:7)
pruebas.Llamadas.salto(Llamadas.java:16)
pruebas.Llamadas.main(Llamadas.java:21)

El programa es extremadamente sencillo: la clase principal llama al método salto, que a su vez llama al método fin, que es el que contiene la llamada a getStackTrace, que es ni más ni menos que la pila de llamadas de subrutina.

Zona comentarios

Memoria libre en Java

Por Saiyine  el 2007-11-10 12:15:29 - Secciones:  JAVA  - Enlace permanente: 797

Conocer la cantidad de memoria libre en un programa Java es realmente sencillo:

public class Memoria
{
  public static void main(String[] args)
  {
    System.out.println("Total: "+Runtime.getRuntime().totalMemory());    
    System.out.println("Libre: "+Runtime.getRuntime().freeMemory());
  }
}

Zona comentarios

Evitando el java.lang.OutOfMemoryError

Por Saiyine  el 2007-11-10 12:27:37 - Secciones:  JAVA  - Enlace permanente: 798

Si tu programa en Java se queda sin memoria suficiente, tiene lugar el siguiente error:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

Se puede deber a dos motivos:

   * Que tu aplicación en Java tenga una perdida de memoria. Toca buscar el problema en el código, en breve os haré un post comentando el profiler que suelo usar, que me parece genial aunque a 400€ por licencia no creo que esté al alcance de todo el mundo.
   * Que tu programa realmente necesite un montón de memoria. En este caso, la memoria disponible la puedes incrementar llamando a la maquina virtual con estos parametros:

java -Xms<tamaño de inicio de la memoria> -Xmx<tamaño máximo>

Por defecto tenemos:

java -Xms32m -Xmx128m

Estos parametros se pueden pasar en diferentes puntos dependiendo del entorno que utilicemos para programar.

Zona comentarios

Patrocinadores

Saiyine recommends the easiest way to earn money with your web: get paid just by having some links! Click this button to check it out.

Text Link Ads

. . .

Descargas

  • ApagaPC
    apagapc241.exe  (1993)
  • LimpiaDocus
    LimpiaDocus001.exe  (1712)
  • RCM
    rcm001.zip  (1611)
  • Popmail
    popmail-0.4-psmn.tar.gz  (1665)
  • Manual de Delphi en PDF
    delphi_pdf.zip  (2144)
  • Evangelio del Perl
    Evangelio_del_perl.pdf  (1742)
  • Excel Simpsons
    Excel Simpsons  (1756)
  • . . .

    Recomiendo

  •  Mozilla Firefox 
    DIR (486)
  •  Mozilla Thunderbird 
    DIR (462)
  • KLite 
    klmcodec375.exe (60)
  •  Emule 
    DIR (448)
  •  Knoppix 
    DIR (378)
  •  Knoppix en español (DVD) 
    DIR (713)
  •  Mldonkey 
    DIR (438)
  •  Nucleo linux 
    DIR (434)
  •  Parche linux 
    DIR (434)

    . . .
  • Proyectos online

  • Saiyine Store
  • RandomWeb
  • Csv to vcard
  • Kunowalls!!!
  • Fondos de pantalla
  • Picaday: imagenes sexys o chocantes.
  • Scarlett: fotos de Scarlett Johansson
  • WhatsmyIP: obtener tu IP pública
  • Voxpop: noticias de internet en castellano
  • El gordo de Navidad: compruebe si ha sido premiado
  • Uma Thurman: galeria de Uma Thurman
  • FunPics: imagenes graciosas
  • . . .

    Blogs

  • Por lo que más querais, no entreis a estos: Tapanez, Yhandros, Onez, Merluzo's Blog, Antoñico's world, Boletin de guerra.

  • Otros en español: Chavalina, Testosterona, Kirai, Hispalibertas, Microsiervos.

  • Mis lecturas en guiri: Coding Horror, MySQL Performance.

    . . .
  • Utilidades

  •  Coral  (544), cacheando webs
  •  Spam.la  (618), correo de usar y tirar
  •  Jotapeges  (875), compartir imagenes en internet facilmente
  •  Mailinator  (613), correo de usar y tirar
  •  Bug me not  (581), absurdos registros di NO
  •  Trashmail  (578), correo de usar y tirar

    . . .
  • Saipuntos

    Jomer: 2
    Yhandros: 1
    Cheimy: 1

    . . .

    Página web ©2001-2006 Saiyine generada en 1.22727s, con 1463610 visitas en total, hoy 1145 (de un total de 1554 previstas).

    . . .