questa è la mia prima volta che utilizzo qualsiasi sito Web di StackExchange, quindi vediamo come va.Abilitare le barre di scorrimento quando JTextArea supera determinate quantità di righe
Quindi ho creato un programma di chat "locale" in Java e utilizzavo un campo JText per l'immissione della chat. Ma volevo consentire la chat multilinea, quindi sono passato a JTextArea. Sto usando un GroupLayout (creato con Window Builder Pro - eclipse) per ridimensionare facilmente le finestre/componenti. Ecco una foto:
Il JTabbedPane, il JTextArea e il pulsante Invia sono tutte contenute in un JPanel, e tutte le cose a sinistra è in essa la propria JPanel. Quindi ho il JTextArea e il pulsante ancorato al fondo del JPanel destro. JTextArea può ridimensionarsi verticalmente, ma il pulsante no. sono stato in grado di ottenere il JTextArea a crescere verticalmente quando entro in nuove linee, mostrano di seguito:
Ma io sono in grado di pensare in modo tale che se entro una certa quantità di linee in il JTextArea, le barre di scorrimento appariranno e impediranno a JTextArea di occupare altro spazio. Così ho provato a inserire JTextArea in un JScrollPane, ma inizialmente disabilitavo le scrollbars e poi li abilitavo quando avevo bisogno di JTextArea per iniziare a scorrere, ma ho imparato che se lo avvolgo, JScrollPane non crescerà ma agirà come se fosse con le barre di scorrimento visibili ma ... senza di loro. :/
** ho voluto mettere un link qui, ma StackOverflow non mi piace;)
Quindi, io sono un po 'bloccato ... C'è qualcosa che fa questo che ho' m mancante? Stavo pensando che avrei potuto creare solo due diversi oggetti GroupLayout, uno con lo scrollpane non ancora valido, e poi altri con lo scrollpane valido ma bloccato a una certa dimensione. Sul listener keyPress potrei controllare se l'area di testo supera un certo limite e quindi cambierà il layout per il pannello? Il JTextArea interno sarebbe ancora lo stesso oggetto, ma solo diversi oggetti di layout. Opinioni su questo approccio?
In ogni caso, grazie in anticipo a tutti coloro che si prendono il loro tempo per rispondere a questo. :)
Grazie mille! Ho usato il codice DocumentListener e ho apportato alcune modifiche personalizzate a GroupLayout e funziona come un incantesimo: D –
+1 per 'DocumentListener'; vedere anche questo relativo [esempio] (http://stackoverflow.com/q/15039652/230513). – trashgod
So che questa domanda non è stata attiva in 5 anni, ma in riferimento alla tua risposta, @ughzan, il codice 'revalidate()' funzionerà anche in un JScrollPane, o qualsiasi altro elemento che è un genitore di JTextArea? – Ryan