Вы уверены, что вам нужно использовать JFormattedTextField
или вы можете использовать JTextField
с DocumentListener
, как рекомендует camickr?Что Formatter
вы используете?
Это только код в методе propertyChange()
, который выполняется при изменении свойства.Таким образом, вы должны обновить artistField
из этого метода.Вам также следует обновить JFormattedTectFields
, используя setValue()
вместо setText()
, поскольку setText()
обновляет только текст, а не фактическое содержимое.
Попробуйте использовать этот 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
нуждается в Formatter
, который может обрабатывать String
.Вот тупой форматер, который просто возвращает ту же строку (A 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;
}
}
Вы используете его, когдаВы инициализируете JFormattedTextField
как:
JFormattedTextField titleField = new JFormattedTextField(new StringFormatter());