當TXTFLD1的值更改時,我想將jTextField - TXTFLD1
的值複製到另一個jTextField -TXTFLD2
。
我選擇propertychangelistener
,因爲我無法檢測TXTFLD1的值何時發生更改,因爲它由一些我現在無法修改的外部代碼更改。通過PropertyChangeListener同步JTextFields值
測試代碼如下:
public class TxtFldSync extends JFrame {
private JButton BTN1 = null;
private JTextField TXTFLD1 = null;
private JTextField TXTFLD2 = null;
public static void main(String[] args) {
TxtFldSync thisClass = new TxtFldSync();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
public TxtFldSync() {
super();
this.setSize(300, 200);
BTN1 = new JButton();
BTN1.setBounds(new Rectangle(178, 38, 67, 17));
TXTFLD1 = new JTextField();
TXTFLD1.setBounds(new Rectangle(32, 42, 83, 20));
TXTFLD2 = new JTextField();
TXTFLD2.setBounds(new Rectangle(30, 78, 83, 20));
//listeners
TXTFLD1.addPropertyChangeListener("value", new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent arg0) {
TXTFLD2.setText(TXTFLD1.getText()+"set by change listener");
//this doesnot work why ?
}
});
BTN1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
TXTFLD1.setText("Action Performed");
//i what to set same value to TXTFLD2 using property change listener
}
});
this.setContentPane(new Container());
this.getContentPane().add(BTN1);
this.getContentPane().add(TXTFLD1);
this.getContentPane().add(TXTFLD2);
}
}
爲什麼屬性更改偵聽器不能正常工作。 這個問題的其他解決方案是什麼?
它們可以共享相同的底層Document對象?然後更改將自動鏡像。 –