gpt4 book ai didi

java - 为什么此代码有 "one off error"?

转载 作者:行者123 更新时间:2023-12-04 06:32:43 26 4
gpt4 key购买 nike

我正在构建一个 GWT 组件,其行为与 stackoverflow 和其他站点上的评论框非常相似。我正在尝试为 KeyPress 注册监听器, ChangeONPASTE将使用剩余字符数等更新我的状态行的事件。

它的工作原理是它总是比文本区域中的实际字符数晚一个字符。我将最大字符数设置为 10。当我输入第一个字符时,它仍然显示“剩余 10 个字符”。它不会更新状态行,直到我输入第二个字符然后它是一个,它说在输入第二个字符时剩余 9 个字符。

当我BACKSPACEDELETE ,它也是一次性的,当没有字符时,它仍然显示“剩余 9 个字符”,直到我按下 BACKSPACEDELETE第二次。

我在 Windows 上的 Firefox、Chrome 和 Internet Explorer 中都遇到了这种行为。所以我认为我没有正确注册某些东西。

我知道这与事件何时被触发有关,但我花了几个小时试图诊断这种行为并且已经没有想法了。

这是我注册事件处理程序的地方,完整的代码是 BoundedTextAreaWithFeedback .

private void registerHandlers()
{
final BoundedTextAreaWithFeedback outer = this;
this.textArea.addChangeHandler(new ChangeHandler()
{
public void onChange(final ChangeEvent changeEvent)
{
outer.validate();
}
});
this.textArea.addKeyPressHandler(new KeyPressHandler()
{
public void onKeyPress(final KeyPressEvent keyPressEvent)
{
outer.validate();
}
});
this.panel.addFocusHandler(new FocusHandler()
{
public void onFocus(final FocusEvent focusEvent)
{
outer.textArea.setFocus(true);
}
});

// capture paste events
this.textArea.sinkEvents(Event.ONPASTE);
}

这是 validate()方法。
private boolean validate()
{
final boolean isValid;
final int len = this.textArea.getText().length();
if (len < this.minLength)
{
this.status.setText("Enter at least " + this.minLength + " characters.");
this.status.setStyleName("input-status-underflow");
isValid = false;
}
else if (len > this.maxLength)
{
this.status.setText(this.maxLength - len + " characters remaining");
this.status.setStyleName("input-status-overflow");
isValid = false;
}
else
{
this.status.setText(this.maxLength - len + " characters remaining");
this.status.setStyleName("input-status-ok");
isValid = true;
}
return isValid;
}

最佳答案

我刚开始添加每个 addXXXHandler()直到一个工作。

this.textArea.addKeyUpHandler(new KeyUpHandler()
{
public void onKeyUp(final KeyUpEvent event)
{
outer.validate();
}
});

似乎已经成功了。

这是 working code , CTRL-V并从上下文菜单粘贴现在也可以使用。

关于java - 为什么此代码有 "one off error"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5212338/

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