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