あなたはJFormattedTextField
を使用する必要がありますか、またはDocumentListener
とJTextField
を使用することはできますか?どのようなFormatter
を使用していますか?
プロパティが変更されたときに実行されるのはpropertyChange()
メソッドのコードだけです。したがって、その方法からartistField
を更新する必要があります。 setText()
は実際の内容ではなくテキストのみを更新するため、setText()
ではなくJFormattedTectFields
をsetValue()
で更新する必要があります。
こののPropertyChangeListenerを試してみてください:
titleField.addPropertyChangeListener("value", new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent e){
Object source = e.getSource();
if (source == titleField) {
String title = (String)titleField.getValue();
artistField.setValue(title);
}
}
});
あなたJFormattedTextField
はString
を扱うことができるFormatter
を必要とします。ここだけの同じ文字列を返しダムフォーマッタです(JTextField
は、あなたが必要としない場合DocumentListener
は良い選択ですFormatter
):
class StringFormatter extends AbstractFormatter {
@Override
public Object stringToValue(String text) throws ParseException {
return text;
}
@Override
public String valueToString(Object value) throws ParseException {
return (String)value;
}
}
あなたはinitiliseたときにあなたがそれを使用JFormattedTextField
のように:
JFormattedTextField titleField = new JFormattedTextField(new StringFormatter());
あなたのすべてのコメントを読むのが面倒すぎるので、すでに議論されている場合は無視してください:-) titleFieldがJFormattedTextFieldで、Formatterがenterでコミットすると、PropertyChangeListenerが呼び出されます。ちょうど:何も表示されません。これは、artistFieldの_property_(text/value)ではなく、_String_フィールドを更新します.FinderFieldは、関連のないメンバーに変更を認識させることはできません:-) – kleopatra