2013-04-16 3 views
0

Я использую JTextPane в приложении Swing. Здесь я получаю проблему, что, когда я открываю файл и читаю его содержимое на JtextPane, он не вызывает Document Listener.Слушатель в JTextPane

Какой Listener следует добавить в JTextPane для чтения файла?

File file=new JFileChooser().getSelectedFile(); 
input = new BufferedReader(
     new InputStreamReader(
     new FileInputStream(
     file))); 
jTextPane1.read(input, "READING FILE :-)"); 

и вот DocumentListener: метод

jTextPane1.getDocument().addDocumentListener(new DocumentListener() { 

     public String getText() { 
      int caretPosition = jTextPane1.getDocument().getLength(); 
      Element root = jTextPane1.getDocument().getDefaultRootElement(); 
      String text = "1" + System.getProperty("line.separator"); 
      for (int i = 2; i < root.getElementIndex(caretPosition) + 2; i++) { 
       text += i + System.getProperty("line.separator"); 
      } 
      return text; 
     } 

     public void insertUpdate(DocumentEvent e) { 
      jTextArea1.setText(getText()); 
     } 

     public void removeUpdate(DocumentEvent e) { 
      jTextArea1.setText(getText()); 
     } 

     public void changedUpdate(DocumentEvent e) { 
      jTextArea1.setText(getText()); 
     } 
    }); 
+0

Вы уже пытаетесь использовать [DocumentListener] (http://docs.oracle.com/javase/tutorial/uiswing/events/documentlistener.html) – SMT

+0

yah, но его не работает Почему? –

+0

Если вы хотите помочь, возможно, вам следует добавить дополнительную информацию ... Что вы пробовали? Какую информацию вы получаете в сообщениях об ошибках или в трассировке. Люди не просто будут делать вашу работу за вас, если вы не окажете им никакой помощи. – SMT

ответ

2

Считанные() использует EditorKit's Reader, который, в свою очередь, может воссоздать Document экземпляр. Быстро создать новый Document, а не удалить() весь контент и добавить его обратно в старый. Попробуйте сравнить экземпляры до и после чтения.

Если они разные, проверьте, добавлен ли экземпляр слушателя в новый экземпляр документа и readd, если он не присоединен.

+0

Но как мы можем хранить «ссылочный идентификатор» нового экземпляра 'Document' для добавления в' addDocumentListener'? –

+0

Проверьте, что возвращается getDocument() до и после setText() – StanislavL