首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DocumentListener没有被调用

DocumentListener没有被调用
EN

Stack Overflow用户
提问于 2014-02-13 17:33:33
回答 2查看 565关注 0票数 2

我正在开发一个小型GUI应用程序,在这个应用程序中,我应该在JTextPane中打开一个文本文档。它运行良好,只是当我将一个DocumentListener添加到我的JTextPane中时,侦听器不会被调用。

这是SSCE:

代码语言:javascript
复制
//GUI.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

class GUI

{

 public static void main(String[] args)

 {
  final JFrame frame = new JFrame("Frame");
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  final JTabbedPane Tab = new JTabbedPane();

  JMenuBar MenuBar = new JMenuBar();

  JMenu File = new JMenu("File");
  File.setMnemonic('F');

  JMenuItem Open = new JMenuItem("Open");

  File.add(Open);
  MenuBar.add(File);

  Open.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent eaal)
   {
    JFileChooser fc = new JFileChooser(".");
    int response = fc.showOpenDialog(frame);
    try{
     BufferedReader reader = new BufferedReader(new FileReader(fc.getSelectedFile())));
     JTextPane Text = new JTextPane();
     Text.getDocument().addDocumentListener(new DocumentChangeListener());
     Text.read(reader,null);
     Tab.add(fc.getSelectedFile().toString(), Text);
    }
    catch(Exception ea)
    {}
   }
  });

  frame.add(Tab);
  frame.setJMenuBar(MenuBar);
  frame.setSize(450,450);
  frame.setLocationRelativeTo(null);
  frame.setVisible(true);  
 }

}

//DocumentChangeListener.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

class DocumentChangeListener implements DocumentListener
{
 public void changedUpdate(DocumentEvent edcl){}
 public void insertUpdate(DocumentEvent edcl)
 {
  System.out.println("Inserted");
 }
 public void removeUpdate(DocumentEvent edcl){}
}

我在这里做错什么了?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-13 17:39:39

readJTextComponent创建了一个新文档,因此需要在调用它之后而不是之前调用它。

代码语言:javascript
复制
text.read(reader, null);
text.getDocument().addDocumentListener(new DocumentChangeListener());
票数 2
EN

Stack Overflow用户

发布于 2014-02-13 17:40:10

问题是,当您说Text.read时,您正在更改文档。

Text.getDocument().addDocumentListener(new DocumentChangeListener());移动到Text.read(reader,null);之后,您应该会很好!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21761392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档