未调用Java-DocumentListener
我正在开发一个小的GUI应用程序,在这个应用程序中,我应该在JTextPane中打开一个文本文档。它工作正常,只是当我将DocumentListener添加到JTextPane时,没有调用该侦听器 以下是SSCE:未调用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.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,是的,你说得对。我的错。