通过 JSNI 更改小部件文本

changing Widget Text through JSNI

您好,我在 GWT 中使用 JSNI 来使用一些 java 脚本代码。我在 uibinder(file.ui.xml) 中定义了我的小部件:

 <g:Label ui:field="LBLMsg" text="mytext" styleName="{style.conceptMessage}" width="1800px"/>

我通过以下代码在 java 文件中使用了这个标签:

@UiField 标签 LBLMsg;

它工作正常我可以使用标签小部件并且可以使用 LBLMsg.setText("sometex") 更改文本 然而,当我将它传递给我的 JSNI 函数以在某些 JAVAScript 代码中使用它时,我的问题就开始了。我希望使用 Java 脚本更改此标签的文本,为此我使用了以下代码:

 void TestWritingLabelFromJSNI()
      {
        writeGWTLabel(LBLMsg.getElement());

        }   
    private native void writeGWTLabel(Element elt)/*-{

    var labelelement = document.getElementById('LBLMsg');
    alert("Element labelelement ;"+labelelement );

        }-*/

当我称其为标签元素时 return 为空。因此我无法将其设置为文本。我不确定自己在做什么。任何人都可以提出任何建议。非常感谢任何帮助。已经浪费了太多时间没有任何成功。

您需要做的就是:

private native void writeGWTLabel(Element elem, String text)/*-{
    // Remove all children first.
    while (elem.firstChild) {
      elem.removeChild(elem.firstChild);
    }
    // Add a new text node.
    if (text != null) {
      elem.appendChild(elem.ownerDocument.createTextNode(text));
    }
}-*/