// Create a text area JTextArea textArea = new JTextArea("word1 word2\nword3\nword4");
// Get paragraph element Element paragraph = textArea.getDocument().getDefaultRootElement();
// Get number of content elements int contentCount = paragraph.getElementCount();
// Get index ranges for each content element. // Each content element represents one line. // Each line includes the terminating newline. for (int i=0; i<contentCount; i++) { Element e = paragraph.getElement(i); int rangeStart = e.getStartOffset(); int rangeEnd = e.getEndOffset(); try { String line = textArea.getText(rangeStart, rangeEnd-rangeStart); } catch (BadLocationException ex) { } }Here is another way to enumerate the content elements with a ElementIterator: // Get the text area's document Document doc = textArea.getDocument();
// Create an iterator using the root element ElementIterator it = new ElementIterator(doc.getDefaultRootElement());
// Iterate all content elements (which are leaves) Element e; while ((e=it.next()) != null) { if (e.isLeaf()) { int rangeStart = e.getStartOffset(); int rangeEnd = e.getEndOffset(); try { String line = textArea.getText(rangeStart, rangeEnd-rangeStart); } catch (BadLocationException ex) { } } }
//得到光标所在行的字符串 int cp=textArea.getCaretPosition(); int line=textArea.getLineOfOffset(cp); int lineStart=textArea.getLineStartOffset(line); int lineEnd=textArea.getLineEndOffset(line); String s=textArea.getText(lineStart, lineEnd-lineStart);
JTextArea textArea = new JTextArea("word1 word2\nword3\nword4");
// Get paragraph element
Element paragraph = textArea.getDocument().getDefaultRootElement();
// Get number of content elements
int contentCount = paragraph.getElementCount();
// Get index ranges for each content element.
// Each content element represents one line.
// Each line includes the terminating newline.
for (int i=0; i<contentCount; i++) {
Element e = paragraph.getElement(i);
int rangeStart = e.getStartOffset();
int rangeEnd = e.getEndOffset();
try {
String line = textArea.getText(rangeStart, rangeEnd-rangeStart);
} catch (BadLocationException ex) {
}
}Here is another way to enumerate the content elements with a ElementIterator:
// Get the text area's document
Document doc = textArea.getDocument();
// Create an iterator using the root element
ElementIterator it = new ElementIterator(doc.getDefaultRootElement());
// Iterate all content elements (which are leaves)
Element e;
while ((e=it.next()) != null) {
if (e.isLeaf()) {
int rangeStart = e.getStartOffset();
int rangeEnd = e.getEndOffset();
try {
String line = textArea.getText(rangeStart, rangeEnd-rangeStart);
} catch (BadLocationException ex) {
}
}
}
int cp=textArea.getCaretPosition();
int line=textArea.getLineOfOffset(cp);
int lineStart=textArea.getLineStartOffset(line);
int lineEnd=textArea.getLineEndOffset(line);
String s=textArea.getText(lineStart, lineEnd-lineStart);