2016-01-13 42 views
1

對於我而言,我想通過數字行獲取JTextArea中的文本。java - 通過數字行從JTextArea中獲取文本

對於e.g

name : andy 
birth : jakarta, 1 jan 1990 
number id : 01011990 01 
age : 26 
study : Informatics engineering 

所以,我想在第3行

文本,我想我可以用jTextArea.getText(3,jTextArea.getText().length()), 但它不工作。

這樣,從第3行,我希望得到文本

number id : 01011990 01 
+2

好吧,所以根據你的[上一個問題](http://stackoverflow.com/questions/34738025/java-inserted-text-using-jtextarea-by-number-line),你知道如何在給定行插入文本,這給你的起點 – MadProgrammer

回答

5

僅僅基於例如從previous question ...

Document doc = textArea.getDocument(); 
Element root = doc.getDefaultRootElement(); 
Element element = root.getElement(2); 
int start = element.getStartOffset(); 
int end = element.getEndOffset(); 
System.out.println(doc.getText(start, end - start)); 

而且可運行代碼

import java.awt.BorderLayout; 
import java.awt.EventQueue; 
import java.awt.event.ActionEvent; 
import javax.swing.AbstractAction; 
import javax.swing.JButton; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 
import javax.swing.WindowConstants; 
import javax.swing.text.BadLocationException; 
import javax.swing.text.Document; 
import javax.swing.text.Element; 

public class ElementEndOffsetTest { 

    public JComponent makeUI() { 
     String str = "name : andy\n" 
       + "birth : jakarta, 1 jan 1990\n" 
       + "number id : 01011990 01\n" 
       + "age : 26\n" 
       + "study : Informatics engineering\n"; 

     JTextArea textArea = new JTextArea(str); 
     textArea.setEditable(false); 
     JPanel p = new JPanel(new BorderLayout()); 
     p.add(new JScrollPane(textArea)); 
     p.add(new JButton(new AbstractAction("add") { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       try { 
        Document doc = textArea.getDocument(); 
        Element root = doc.getDefaultRootElement(); 
        Element element = root.getElement(2); 
        int start = element.getStartOffset(); 
        int end = element.getEndOffset(); 
        System.out.println(doc.getText(start, end - start)); 
       } catch (BadLocationException ex) { 
        ex.printStackTrace(); 
       } 
      } 
     }), BorderLayout.SOUTH); 
     return p; 
    } 

    public static void main(String[] args) { 
     EventQueue.invokeLater(() -> { 
      JFrame f = new JFrame(); 
      f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
      f.getContentPane().add(new ElementEndOffsetTest().makeUI()); 
      f.setSize(320, 240); 
      f.setLocationRelativeTo(null); 
      f.setVisible(true); 
     }); 
    } 
} 

根據您的問題,我想,不過,建議您考慮使用JTable代替,它會更容易,見How to Use Tables更多細節

1

嘗試以下

字符串[]行= jTextArea.getText()分割( 「\ n」); String numberId = lines [3];

字符串numberId = jTextArea.getText()分割( 「\ n」 個)[3]。