/ Cambio de tamaño de ajuste de palabra / JTextArea - java, swing, jtextarea, ajuste de palabra

Cambio de tamaño de ajuste de palabras de JTextArea: java, swing, jtextarea, ajuste de palabras

Por lo tanto, tengo JTextArea en un JPanel (BoxLayout). También tengo relleno de caja que llena el resto del JPanel. Necesito que mi JTextArea comience con una altura de línea (puedo manejar eso), y que se expanda y reduzca cuando sea necesario.

El ajuste de palabras está habilitado, solo lo necesito para ajustar su altura cuando se agrega / elimina una nueva línea.

Intenté con documentListener y getLineCount (), pero no reconoce "wordwrap-newlines".

Me gustaría evitar jugar con las fuentes si es posible.

Y, NO HAY PANES DESPLAZABLES. Es esencial que JTextArea se muestre completamente en todo momento.

Respuestas

13 para la respuesta № 1

JTextArea tiene un efecto secundario bastante particular, en el derechocondiciones, puede crecer por propia voluntad. Me topé con esto accidentalmente cuando intentaba configurar un editor de texto de dos líneas simple (longitud de caracteres restringida por línea, con un máximo de dos líneas) ...

Básicamente, dado el gestor de diseño correcto, este componente puede crecer por sí mismo - en realidad tiene sentido, pero me tomó por sorpresa ...

Soy tan pequeñaMirame crecer

Ahora, además, es posible que desee utilizar un ComponentListener para monitorear cuando el componente cambia de tamaño, si eso es lo que te interesa ...

public class TestTextArea extends JFrame {

public TestTextArea() {

setLayout(new GridBagLayout());

JTextArea textArea = new JTextArea();
textArea.setColumns(10);
textArea.setRows(1);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);

add(textArea);

setSize(200, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);

textArea.addComponentListener(new ComponentAdapter() {

@Override
public void componentResized(ComponentEvent ce) {

System.out.println("I"ve changed size");

}

});

}


/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new TestTextArea();
}

}