Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未调用Java-DocumentListener_Java_Swing_Jtextpane_Documentlistener - Fatal编程技术网

未调用Java-DocumentListener

未调用Java-DocumentListener,java,swing,jtextpane,documentlistener,Java,Swing,Jtextpane,Documentlistener,我正在开发一个小的GUI应用程序,在这个应用程序中,我应该在JTextPane中打开一个文本文档。它工作正常,只是当我将DocumentListener添加到JTextPane时,没有调用该侦听器 以下是SSCE: //GUI.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; class GUI { public static void main(String

我正在开发一个小的GUI应用程序,在这个应用程序中,我应该在JTextPane中打开一个文本文档。它工作正常,只是当我将DocumentListener添加到JTextPane时,没有调用该侦听器

以下是SSCE:

//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){}
}
我做错了什么

谢谢

JTextComponent
创建一个新文档,因此
addDocumentListener
需要在调用之后而不是之前调用

text.read(reader, null);
text.getDocument().addDocumentListener(new DocumentChangeListener());

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


移动
Text.getDocument().addDocumentListener(新的DocumentChangeListener())
to之后
Text.read(读卡器,空)你应该是个好人

有空的挡块不是个好主意。@Kayaman,是的,你说得对。我的错。