Java - Actualizar tamaño en pantalla de JTextArea

 
Vista:

Actualizar tamaño en pantalla de JTextArea

Publicado por Carlos (2 intervenciones) el 15/07/2009 05:16:41
Tengo una clase imprimir la cual imprime un JPanel dentro de este panel ahi un machote de impresion tomado de un documento de word, el problema q me presenta es que dentro de este utilizo JTextArea como contenedor de información, en estos TextAreas utilizo palabras claves para modificarlas una ves que el usuario alla llenado la informacion despues de utilizar una plicacion java previa pero todo esto lo hago bien a la hora de establecer las lineas que iran en el JTextArea y su tamaño de acuerdo al numero de lineas generadas este en pantalla no toma el tamaña nuevo que le estoy asignando si no que mantiene su tamaño antiguo y no he podido encontrar la forma de que se repinte en pantalla a continuacion pongo el codigo donde separo las lineas del TextArea y le asigno el nuevo texto ya formateado y al final del mismo calculo el tamaño que deberia tener el TextArea y se lo asigno.

En resumen cuando trato de darle el nuevo tamaño al textarea este parese no actulizarce ya que no toma el nuevo tamaño

public void acomodarLineasJTextArea(JTextArea textArea) {
String texto = textArea.getText();
String resultado = "";
String palabra = "";
int contador = 0;
for (int x = 0; x < texto.length(); x++) {
if (contador > TAMANO_RENGLON_TEXTO) {
resultado = resultado + " ";
palabra = palabra + texto.charAt(x);
contador = 0;
} else {
if (texto.charAt(x) == ' ') {
resultado = resultado + texto.charAt(x) + palabra;
palabra = "";
contador++;
} else {
palabra = palabra + texto.charAt(x);
contador++;
}
}
}
resultado = resultado + " " + palabra;
textArea.setText("");
textArea.append(resultado);
int numeroLineas = textArea.getLineCount();
Graphics g = textArea.getGraphics();
FontMetrics fontMetrics = g.getFontMetrics();
int tamanoLetra = fontMetrics.getHeight();
int largoLetra = fontMetrics.stringWidth(textArea.getText());
//Aqui calculo el Height del TextArea con numeroLineas * tamanoLetra + 5 que es el que necesito
textArea.setSize(textArea.getWidth(), numeroLineas * tamanoLetra + 5);
textArea.updateUI();

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder