您确定需要使用 a还是JFormattedTextField可以按照 camickr 的建议使用 a ?你在用什么?JTextFieldDocumentListenerFormatter
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 , AJTextField和 a是更好的选择):DocumentListenerFormatter
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());