gpt4 book ai didi

java - 试图让 JFormattedtextfield 改变......不工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:24:02 28 4
gpt4 key购买 nike

我试图通过字符串变量 title 将输入到“titleField”中的任何内容设置为出现在“artistField”中

我在 titleField 中输入文本,按回车键,但 artistField 中什么也没有出现

谁能告诉我我做错了什么?

titleField.addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent e){

Object source = e.getSource();
if (source == titleField) {
title = (String)titleField.getValue();
}
}
});
artistField = new JFormattedTextField();
artistField.setText(title);

最佳答案

您确定需要使用 JFormattedTextField 还是可以使用带有 DocumentListenerJTextField正如camickr建议的那样?您使用的是什么Formatter

当属性改变时,只有propertyChange()方法中的代码被执行。因此,您必须从该方法更新 artistField。您还应该使用 setValue() 而不是 setText() 更新 JFormattedTectFields,因为 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 需要一个可以处理StringFormatter。这是一个只返回相同字符串的愚蠢格式化程序(如果您不需要 FormatterJTextFieldDocumentListener 是更好的选择):

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());

关于java - 试图让 JFormattedtextfield 改变......不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8459999/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com