E' un po' laborioso, ma si può fare:
Praticamente c'è una versione di getText che prende un offset all'interno del componente di testo su cui viene applicato e la lunghezza della stringa da andare a recuperare da quell'offset. I metodi per prendere gli offset di inizio e fine riga sono propri di JTextArea.codice:import javax.swing.*; import java.awt.*; import java.awt.event.*; public class textAreaLines extends JFrame implements ComponentListener { JScrollPane scr; JTextArea ta = new JTextArea(); public void componentHidden (ComponentEvent ce) { } public void componentMoved (ComponentEvent ce) { } public void componentResized (ComponentEvent ce) { System.out.println("COMPONENTE RIDIMENSIONATO\n________________________\n"); System.out.println("La textarea ha: "+ta.getLineCount()+" righe"); try { for (int i = 0; i < ta.getLineCount(); i++) { System.out.println("La riga " + i + " contiene " + (ta.getLineEndOffset(i)-ta.getLineStartOffset(i))+ " caratteri"); System.out.println("Il testo della riga "+i+" è: "+ta.getText(ta.getLineStartOffset(i), ta.getLineEndOffset(i)-ta.getLineStartOffset(i))); } } catch (Exception e) { System.out.println(e.toString()); } } public void componentShown (ComponentEvent ce) { } public textAreaLines() { super("Prova testo"); this.setSize(400, 500); this.getContentPane().setLayout(new BorderLayout()); scr = new JScrollPane(ta); ta.setText("Questo è solo un testo di prova, contiene caratteri\ndi acapo e altre amenità varie\n\nQuesto è solo un testo di prova, contiene caratteri di acapo e altre amenità varie\nQuesto\n è solo un testo di prova, contiene caratteri di acapo e altre amenità\n varie"); ta.setLineWrap(true); ta.setWrapStyleWord(true); this.getContentPane().add(scr, BorderLayout.CENTER); this.addComponentListener(this); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); System.out.println("La textarea ha: "+ta.getLineCount()+" righe"); } public static void main (String[] args) { textAreaLines tal = new textAreaLines(); } }
Ciao.

Rispondi quotando