本人想在JTextArea输入的过程中,每次键盘按下的时候都取得它的文本,所以添加了keyTyped事件的监听,可是在keyTyped中每次取得的文本都是本次按键按下之前的文本,不知道怎样才能取得当前文本。

解决方案 »

  1.   

    添加:
    public void keyReleased(KeyEvent e) {
    // TODO Auto-generated method stub

    }不要添加:
    public void keyTyped(KeyEvent e) {
    // TODO Auto-generated method stub

    }
    ^_^
      

  2.   

    谢谢你的,回答,不过你的方案不行,用keyReleased方法,在输入中文的时候会出问题的。
      

  3.   

    对其document进行监听.
    AbstractDocument document = JTextArea.getDocument();
    document.addDocumentListener() {
    ...
    }
      

  4.   

    小写了一个程序,可以参考一下,能实时取得textArea中的文本.import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.text.*;
    import javax.swing.event.*;public class WriteObject {
            
            public static void main(String[] args) {
                    JFrame frame = new JFrame("Text");
                    
                    JTextArea textArea = new JTextArea(30, 30);
                    textArea.setLineWrap(true);
                    JScrollPane scroller = new JScrollPane(textArea);
                    
    //不需要自己去处理键盘事件,用下面的方法就可以了.
                            Document document = textArea.getDocument(); // 最主要的是这里
                            document.addDocumentListener(new DocumentListener(){
                                    public void changedUpdate(DocumentEvent e) {
                                            System.out.println("---change----");
                                    }
                                    
                                    public void insertUpdate(DocumentEvent e) {
                                            try {// 输入时,会输出当前textArea中的内容
                                                    Document document = e.getDocument();
                                                    System.out.println(document.getText(0, document.getLength()));
                                                    System.out.println("----Insert----");
                                            } catch (BadLocationException blex) {
                                                    
                                            }
                                    }
                                    
                                    public void removeUpdate(DocumentEvent e) {
                                            try {// 删除时,输出当前textArea中的内容
                                                    Document document = e.getDocument();
                                                    System.out.println(document.getText(0, document.getLength()));
                                                    System.out.println("----Remove----");
                                            } catch (BadLocationException blex) {
                                                    
                                            }
                                    }
                            });
                    
                    frame.getContentPane().add(scroller);
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setSize(500, 500);
                    frame.setVisible(true);
            }
    }