【问题标题】:SmartGWT, appending HTML to HTMLPaneSmartGWT,将 HTML 附加到 HTMLPane
【发布时间】:2011-01-22 17:13:01
【问题描述】:

我目前正在使用 SmartGWT,并且一直在尝试获得一种将面板(例如 gwt Standard VerticalPanel)包含到智能 GWT 窗口中的方法。 VerticalPanel 的原因是我可以将小部件附加到verticalpanel 对象而无需重新设置整个内容,例如:

HTMLPane hPaneObj = new HTMLPane();  
hPaneObj.setContents("Foo");

现在要追加,我只能看到我能做到:

hPaneObj.setContents(hPaneObj.getContents() + "Bar");

这不是我需要的。

添加 VerticalPanel 后出现问题,即使使用 true 作为参数调用的 'setCanSelectText' 方法,我也无法在窗口中选择任何文本。以下是我整理的一个简短示例:

 public void onModuleLoad() {
  Window theWindow = new Window();
  theWindow.setTitle("Good evening");
  theWindow.setWidth(500);
  theWindow.setHeight(500);
  theWindow.setCanSelectText(true);

  VerticalPanel vp = new VerticalPanel();
  vp.add(new HTML("foo"));
  vp.add(new HTML("bar"));
  theWindow.addItem(vp);
  Canvas canvas = new Canvas();
  canvas.addChild(theWindow);
  canvas.draw();
 }

我很惊讶,但是 HTMLPane 不允许我在不重置整个内容的情况下追加。

任何建议都将不胜感激,但我需要能够“附加”到面板。我不是特别喜欢使用垂直面板的想法,但是我需要找到一种方法来允许上述内容或允许我允许垂直面板可访问,即选择文本。

非常感谢

克里斯托弗。

【问题讨论】:

    标签: java javascript gwt smartgwt


    【解决方案1】:

    VerticalPanel 使用 html table 创建其内容,在这种情况下很可能不是您想要的。一般来说,在 HTML 中,除了现有内容之外,不可能添加纯 HTML,因为它具有类似于 xml 的性质。例如,如果您有以下 html <div>some text</div>。如果要添加文本,则添加的点必须相对于 div 标记,例如在 sometext 之间添加某些内容而不重新插入整个文本是不可能的。

    在您的情况下,您可能希望使用FlowPanel(即div)并使用InlineHTML 添加HTML(使用span 包装HTML)。如果您不想包装 span,则必须像 HTMLPane 示例中那样重新插入文本。

    【讨论】:

    【解决方案2】:

    您需要在正确的位置设置 canSelectText,而不是在整个窗口上(包括标题和图标),而只是在允许选择的元素上。

    所以有两个选择:

    1) 当您将一个普通的 GWT 小部件添加到 SmartGWT 容器时,它会使用 WidgetCanvas 自动包装。你可以自己包装它,然后在 WidgetCanvas 上 setCanSelectText()。

    http://www.smartclient.com/smartgwtee/javadoc/com/smartgwt/client/widgets/WidgetCanvas.html

    2) 继承 Canvas 并覆盖 getInnerHTML() 以返回 DIV 或其他具有已知 ID 的元素,然后使用 GWT 的低级 DOM 操作 API 来操作其内容。

    【讨论】:

    • 我在 Smart GWT 网站上提出了这个问题,并得到了准确的答复。如果您是“同构”用户,感谢您的帮助。
    • 还是谢谢你!我可能听起来对你在那里的回应有点忘恩负义,但这根本不是本意。 :)
    • 这是一个共享帐户,但是是的,当时是我。在这里将答案标记为正确不会有什么坏处:)
    【解决方案3】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-02
      • 2014-09-09
      • 2015-11-29
      • 2016-08-11
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多