现在有3个JTextField:tf1,tf2,tf3。想实现如下功能:当改变其中一个组件的内容时,其他2个组件的内容也跟着变化,显示相同的内容,如何实现?我尝试过用:Document类和DocumentListener接口,但好像陷入了死循环。部分代码如下:
=====================代码(1)===============================  
                DL   dl   =   new   DL();
                //把tf1,tf2,tf3的Document实现同一个DocumentListener接口
                dl.addMember(tf1);              
                dl.addMember(tf2);
                dl.addMember(tf3);
=======================代码(2)=================================
class   DL   implements   DocumentListener   {        ArrayList <JTextField>   members   =   new   ArrayList <JTextField> ();        public   void   addMember(JTextField   tf)   {
                tf.getDocument().addDocumentListener(this);
                members.add(tf);
        }        @Override
        public   void   insertUpdate(DocumentEvent   e)   {
                setMemberText(e);
        }        @Override
        public   void   removeUpdate(DocumentEvent   e)   {
                setMemberText(e);
        }        @Override
        public   void   changedUpdate(DocumentEvent   e)   {        }        private   void   setMemberText(DocumentEvent   e)   {                
                for   (JTextField   d   :   members)   {                        
                        if   (d.getDocument()   ==   e.getDocument())   {   //如果是组件本身引起的变化,无需改变该组件的内容。
                                continue;
                        }                        
                        try   {
                                String   str=e.getDocument().getText(0,   e.getDocument().getLength());
                                d.setText(str);                     //改变其他组件的内容
                        }   catch   (Exception   ex)   {                        
                        }
                }
        }
}
========================================
这样做有个缺点:当某一个JTextField的内容发生变化时,其他2个也会受到影响,从而跟着改变内容。改变内容后,又影响原来的JTextField改变,如此循环~~~~~请问,这种方法能行得通吗?如果可以,应如何修改?