Domanda

Voglio che il mio JTextArea per ridimensionare sé (espandere in senso verticale) quando si raggiunge l'ultima riga (che l'altezza della zona di testo in grado di offrire) e l'utente vuole iniziare una nuova riga. Sai, come la casella di testo in MSWord.

Ho un idea di utilizzare getLineCount() e determinare (se necessario) la nuova altezza del JTextArea. Avete, o sapere di più approcci per l'attuazione del presente?

È stato utile?

Soluzione

In realtà, il JTextArea ha sempre la dimensione corretta in modo che tutti righe di testo sono visibili. Quello che si verifica è probabilmente che si avvolto l'area di testo in un JScrollPane. Basta omettere il riquadro di scorrimento e rendere l'area di testo figlio diretto del contenitore.

Un'altra soluzione è quella di ascoltare ridimensionare gli eventi dell'area di testo e le dimensioni del riquadro di scorrimento di conseguenza. In questo modo, si può crescere fino a una certa dimensione e poi iniziare a barre di scorrimento del display (ad esempio, quando qualcuno incolla 500KB di testo nell'area di testo).

Altri suggerimenti

Ho avuto lo stesso problema. Dal mio test, non credo che il JTextArea imposta le sue dimensioni in modo dinamico. Invece, la sua dimensione sembra essere limitata dal suo contenitore (un JPanel nel mio caso). Tuttavia, il JTextArea non cambia la sua dimensione preferita in base al testo che contiene. Dalla documentazione:

  

java.awt.TextArea ha due proprietà righe e colonne utilizzate per determinare la dimensione preferita. JTextArea utilizza queste proprietà per indicare la dimensione preferita della finestra quando posto all'interno di una JScrollPane per abbinare la funzionalità fornita da java.awt.TextArea. JTextArea ha una dimensione preferita di ciò che è necessario per visualizzare tutto il testo, in modo che funzioni correttamente all'interno di un JScrollPane. Se il valore di righe o colonne è uguale a zero, la dimensione preferita lungo tale asse è utilizzato per la dimensione preferita finestra lungo lo stesso asse.

Ho avuto lo stesso problema, ho messo il JTextArea in un JScrollPane e impostare la dimensione preferita di JTextArea, e credo che sia la causa del problema.

Quindi, la soluzione giusta è quella di mettere il JTextArea in una JScrollPane, e non toccare la dimensione preferita di JTextArea, set di JScrollPane invece.

Vai alla JTextArea " Proprietà " - lista di controllo " lineWrap ".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top