E' un po' laborioso, ma si può fare:

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();
  }
}
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.
Ciao.