gpt4 book ai didi

java - jFormattedTextField 的 Formatter.setCommitsOnValidEdit(true) 在第一次聚焦时不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:55:40 25 4
gpt4 key购买 nike

我有一个 jFormattedTextField,我将 setCommitsOnValidEdit 设置为 true,然后我在“value”属性的“property change”中添加了一个事件监听器。

jFormattedTextField 的第一个焦点是在输入时不调用事件监听器方法。但是在“focusLost”上它会调用事件监听器,之后当它再次获得焦点时它会在输入时调用事件监听器。

我希望在 jFormattedTextField 中的任何时间发生任何更改后调用事件监听器(即使在第一个焦点中)。

有什么问题?我该如何解决?

最佳答案

实际上,setCommitOnValidEdit 应该始终如您所愿地工作(在下面的代码片段中也是如此),不需要 DocumentListener,毕竟该方法正是用于此目的。所以我怀疑在你的上下文中还有其他问题。或者出于某种原因,第一次编辑未解析为任何有效内容?

    NumberFormatter numberFormatter = new NumberFormatter( 
NumberFormat.getIntegerInstance());
// allow or not doesn't make a difference
numberFormatter.setAllowsInvalid(false);
numberFormatter.setCommitsOnValidEdit(true);
JFormattedTextField readTimeOut = new JFormattedTextField(numberFormatter);
PropertyChangeListener l = new PropertyChangeListener() {

@Override
public void propertyChange(PropertyChangeEvent evt) {
LOG.info("got new value: " + evt.getNewValue());
}
};
readTimeOut.addPropertyChangeListener("value", l);
readTimeOut.setColumns(20);
readTimeOut.setHorizontalAlignment(SwingConstants.RIGHT);

JFormattedTextField other = new JFormattedTextField(numberFormatter);
other.addPropertyChangeListener("value", l);
other.setColumns(20);
other.setHorizontalAlignment(SwingConstants.RIGHT);
JPanel box = new JPanel();
box.add(readTimeOut);
box.add(other);

关于java - jFormattedTextField 的 Formatter.setCommitsOnValidEdit(true) 在第一次聚焦时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7283334/

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