GWT - 无法将文本输入TextArea

时间:2017-11-02 10:53:56

标签: gwt textarea

我有一个奇怪的问题需要解决。 我有一个GWT Textarea,无法输入文本,但是,我能够自动设置文本。

我已经尝试

textBox.setEnabled(true);
textBox.setFocus(true);
textBox.setReadOnly(false);

但它没有改变任何东西。 在浏览css文件时,一切似乎都没问题。

以下是“整体”源代码:

private Input(AbsolutePanel canvas) {

    textBox = new MouseEventTextBox();
    textBox.setStylePrimaryName(PRIMARY_STYLE);
    textBox.addKeyUpHandler(this);
    textBox.addKeyDownHandler(this);
    textBox.addFocusHandler(this);
    textBox.addBlurHandler(this);
    textBox.setEnabled(true);
    textBox.setFocus(true);
    textBox.setReadOnly(false);
    textBox.setText("Just an apple"); // Works, text is set but not editable
    canvas.add(textBox, -1000, -1000);
}

private class MouseEventTextBox extends TextArea{
    public MouseEventTextBox() {
        super();
        sinkEvents(Event.MOUSEEVENTS);
    }

    public void onBrowserEvent(Event event) {
        // Call the superclass' implementation first.
        super.onBrowserEvent(event);

        if ((DOM.eventGetButton(event) == Event.BUTTON_LEFT) && (DOM.eventGetType(event) == Event.ONMOUSEUP)) {
            this.setReadOnly(false);
            DOM.eventCancelBubble(event, true);
        }
    }
}

CSS

border-width: 0px;
background-color: #fffde5;
padding-top: 2px;
padding-left: 3px;
padding-right: 3px;
padding-bottom: 1px;
z-index: 50;
overflow: hidden;

也许,有人可以给我一个提示或知道这里出了什么问题?

非常感谢!

1 个答案:

答案 0 :(得分:4)

您的代码的可疑部分是:

textBox.addKeyUpHandler(this);
textBox.addKeyDownHandler(this);
textBox.addFocusHandler(this);
textBox.addBlurHandler(this);

这意味着,this实现了KeyUpHandlerKeyDownHandlerFocusHandlerBlurHandler。不幸的是,您没有向我们展示处理这些事件的方法。

我打赌,你的onKeyDown方法有问题。当我阻止KeyDownEvent事件(stopPropagationpreventDefault)时,我能够实现相同的行为。

检查浏览器控制台是否有错误。如果没有,请注释掉textBox.addKeyDownHandler(this);行。