A question about DocumentListener
How do I use the changedUpdate(DocumentEvent e) method of DocumentListener. It should be invoked when the attributes changed. But why this method invoked under such situation see below. I add a button and a text pane in my program. When I click the button, the changedUpdate(DocumentEvent e) method will be invoked.
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileReader;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextPane;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
publicclass SwingFrameextends JFrame{
public SwingFrame(){
}
/**
* @param args
*/
publicstaticvoid main(String[] args){
// TODO Auto-generated method stub
JPanel panel =new JPanel();
panel.add(new JButton("button"));
final JTextPane textPane =new JTextPane();
File file =new File("/tmp/test.txt");
try{
FileReader in =new FileReader(file);
textPane.read(in,null);
in.close();
}catch (Exception e){
// TODO: handle exception
e.printStackTrace();
}
final MyListener listener =new MyListener();
textPane.getDocument().addDocumentListener(listener);
JButton button =new JButton("button");
button.addActionListener(new ActionListener(){
publicvoid actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
File file =new File("/tmp/test.txt");
try{
FileReader in =new FileReader(file);
textPane.read(in,null);
in.close();
}catch (Exception ex){
// TODO: handle exception
ex.printStackTrace();
}
textPane.getDocument().addDocumentListener(listener);
}
});
JFrame frame =new JFrame();
frame.setLayout(new FlowLayout());
frame.add(textPane);
frame.add(button);
frame.setSize(200, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
staticclass MyListenerimplements DocumentListener{
publicvoid changedUpdate(DocumentEvent e){
// TODO Auto-generated method stub
System.out.println("changed");
}
publicvoid insertUpdate(DocumentEvent e){
// TODO Auto-generated method stub
System.out.println("insert");
}
publicvoid removeUpdate(DocumentEvent e){
// TODO Auto-generated method stub
System.out.println("remove");
}
}
}

