Foro de elhacker.net

Programación => Java => Mensaje iniciado por: kinos en 11 Agosto 2009, 16:20 pm



Título: limitar numero de lineas que caben en un JTextPane, como si fuese una shell
Publicado por: kinos en 11 Agosto 2009, 16:20 pm
Sabeis cómo puedo limitar el número de lineas que se pueden ir escribiendo en un JTextPane como si se tratase de una Shell?

Un problema que tengo también es que mi programa va escribiendo en el JTextPane constantemente pero cuando seleccionas algo de texto dentro mientras esta funcionando se queda colgao.
¿Sabeis que puedo hacer?

He probado así --> miJTextPane.setEnabled(false);

Funciona bien pero al estar deshabilitado se ve el texto en grises y el color de fondo en blanco y pierde la gracia. Si tuviese los colores y funcionase igual estaría bien.


Título: Re: limitar numero de lineas que caben en un JTextPane, como si fuese una shell
Publicado por: 1mpuls0 en 11 Agosto 2009, 17:09 pm
Hola para para limitar el número de lineas, ni idea la verdad, ya que nunca he utilizado este componente.

La parte donde mencionas que seleccionas algo de texto no entendi muy bien, ¿Qué es lo que hace el programa?

En lo unico que te puedo ayudar es cuando utilizas el metodo setEnabled(boolean)

Puedes hacer lo siguiente.

Código:
miJTextPane.setText("Hola foro.elhacker.net");
miJTextPane.setDisabledTextColor(new Color(0, 0, 0));
miJTextPane.setEnabled(false);

El metodo setDisableTextColor es para el color cuando el texto esta desabilitado, bueno creo que no hacia falta que lo dijera.

Espero haberte ayudado en algo.

Saludos!


Título: Re: limitar numero de lineas que caben en un JTextPane, como si fuese una shell
Publicado por: kinos en 11 Agosto 2009, 17:58 pm
Citar
miJTextPane.setText("Hola foro.elhacker.net");
miJTextPane.setDisabledTextColor(new Color(0, 0, 0));
miJTextPane.setEnabled(false);

Eso me vendría genial si pudiese cambiarle el fondo también. Ya que me evita que se bloquee la aplicación.

Lo que hace el programa es que varios hilos van escribiendo en la pantalla (jTextPane). Pero como hagas click en el jTextPane la hemos cagao...

mmm igual podía hacer que cuando llegue a tener un número determinado de filas, que elimine la primera.


Título: Re: limitar numero de lineas que caben en un JTextPane, como si fuese una shell
Publicado por: 1mpuls0 en 11 Agosto 2009, 18:31 pm
Para cambiar el fondo del JTextPane (y de muchos otros componentes) se utiliza el metodo setBackground(Color) [Si es que te refieres a eso]

Código:
miJTextPane.setBackground(new Color(51, 153, 255));
miJTextPane.setText("Hola foro.elhacker.net");
miJTextPane.setDisabledTextColor(new Color(0, 0, 0));
miJTextPane.setEnabled(false);

La verdad no entiendo porque se bloque, bueno será que no conozco bien este componente, pero raro he, no deberia.

Intentas hacer algo parecido a esto?? o para que ocupas el JTextPane (para que escribes en el) [y si utilizas JTextArea?? :huh:]

(http://img228.imageshack.us/img228/5376/44527052.th.gif) (http://img228.imageshack.us/i/44527052.gif/)

Saludos



Título: Re: limitar numero de lineas que caben en un JTextPane, como si fuese una shell
Publicado por: kinos en 11 Agosto 2009, 18:57 pm
Si lo que quiero hacer es muy parecido ha eso, unicamente le puse colores y le cambié el tamaño de la letra y la fuente.
¿Con el jTextArea no me ocurrirá los mismo? es que cambias el puntero cuando un proceso escribe no... y eso es quizas lo que le ocurre... que si seleccionas al mismo tiempo...
¿Tienes ese ejemplo por ahi para probar?


Título: Re: limitar numero de lineas que caben en un JTextPane, como si fuese una shell
Publicado por: 1mpuls0 en 12 Agosto 2009, 00:47 am
Por lo menos a mi no me pasa nada extraño con el JTextArea :)
Si gustas te mando el ejemplo pero em... como le hago??  :xD






Título: Re: limitar numero de lineas que caben en un JTextPane, como si fuese una shell
Publicado por: kinos en 12 Agosto 2009, 02:05 am
ahm gracias, pero he cambiado ya el jTextPane por el jTextArea y funciona bien. Ahora el problema que le veo es que no debe de ser un objeto sincronizado entonces un proceso escribe en un trozo de la línea y otro en otro trozo (según duerman los procesos o despierten). Pero vaya eso sólo pasa ha veces y tapoco es muy importante ahora mismo.
Esto con el jTextPane no me pasaba.

Bueno... creo que se podría solucionar extendiendo de la clase jTextArea y sobreescribiendo el método para escribir poniendole synchronized. Así no se pisaran los procesos.