我目前正在使用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不允许我在不重置整个内容的情况下进行追加。

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

非常感谢

克里斯托弗。

最佳答案

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

在您的情况下,您可能需要使用FlowPanel(这是div)并添加带有InlineHTML的HTML(这会将HTML与span包裹在一起)。如果您不希望span换行,则必须像HTMLPane示例中那样重新插入文本。

09-10 13:24