esta es la primera vez que uso cualquier sitio web de StackExchange, así que vamos a ver cómo funciona.Activando barras de desplazamiento cuando JTextArea excede cierta cantidad de líneas
Así que he estado haciendo un programa de chat "local" en Java, y estaba usando un JTextField para la entrada de chat. Pero quería permitir el chat multilínea, así que cambié a JTextArea. Estoy usando un GroupLayout (construido con Window Builder Pro - eclipse) para facilitar el cambio de tamaño de ventanas/componentes. Aquí hay una foto:
El JTabbedPane, el JTextArea y el botón Enviar están contenidos en un JPanel, y todas las cosas a la izquierda está en su propio JPanel. Así que tengo JTextArea y el botón acoplado en la parte inferior del JPanel derecho. El JTextArea puede cambiar el tamaño verticalmente, pero el botón no. que era capaz de conseguir el JTextArea a crecer verticalmente cuando entro en nuevas líneas, muestran a continuación:
Pero soy incapaz de pensar en una manera de modo que si entro en una cierta cantidad de líneas en JTextArea, las barras de desplazamiento aparecerán y evitarán que JTextArea ocupe más espacio. Así que traté de envolver el JTextArea en un JScrollPane pero inhabilitó las barras de desplazamiento inicialmente y luego las habilité cuando necesité el JTextArea para comenzar a desplazarme, pero aprendí que si lo envuelvo, el JScrollPane no crecerá, pero seguirá actuando como lo haría. con las barras de desplazamiento visibles pero ... sin ellas. :/
** quería poner un enlace aquí, pero stackoverflow no me gusta;)
lo tanto, estoy un poco atascado ... ¿Hay algo que hace que yo' ¿Me falta? Estaba pensando que solo podía crear dos objetos GroupLayout diferentes, uno con el panel de desplazamiento ni siquiera válido, y luego otro con el panel de desplazamiento válido pero atascado en un cierto tamaño. En el oyente de keyPress, pude verificar si el área de texto excede un cierto límite y luego cambiaría el diseño del panel. El JTextArea interno seguiría siendo el mismo objeto, pero solo objetos de diseño diferentes. Opiniones sobre ese enfoque?
De todos modos, gracias de antemano a todos los que se toman su tiempo para responder a esto. :)
¡Gracias soooo much! Utilicé el código de DocumentListener e hice algunas modificaciones personalizadas al GroupLayout y funciona como un amuleto: D –
+1 para 'DocumentListener'; vea también este relacionado [ejemplo] (http://stackoverflow.com/q/15039652/230513). – trashgod
Sé que esta pregunta no ha estado activa en 5 años, pero en referencia a su respuesta, @ughzan, ¿el código 'revalidate()' también funcionaría en un JScrollPane, o cualquier otro elemento que sea padre de JTextArea? – Ryan