通过JSNI更改窗口小部件文本

时间:2015-12-05 23:38:57

标签: javascript gwt element jsni

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

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

比我在我的java文件中通过以下代码使用此Label:

@UiField Label LBLMsg;

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

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

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

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

        }-*/

当我调用它时,labelelement返回null。因此我无法设置文本。我不确定我在做什么。谁能提出任何建议。非常感谢任何帮助。已经浪费了太多时间而没有任何成功。

1 个答案:

答案 0 :(得分:0)

您需要做的就是:

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));
    }
}-*/
相关问题