【发布时间】:2009-10-03 00:49:33
【问题描述】:
我画了一个空白。 GWT 有生成 HTML P 标记的小部件吗?
我只希望 P 标签出现在 DOM 中,没有任何无关的 DIV。
【问题讨论】:
我画了一个空白。 GWT 有生成 HTML P 标记的小部件吗?
我只希望 P 标签出现在 DOM 中,没有任何无关的 DIV。
【问题讨论】:
GWT 没有这样的小部件。但是您可以轻松地创建一个。 SimplePanel 有一个受保护的构造函数,允许它创建一个带有任何 HTML 标记的面板。要使用 P 标签创建面板,只需扩展 SimplePanel 并使用您自己的构造函数创建它:
public class PPanel extends SimplePanel {
public PPanel() {
super(Document.get().createPElement());
}
}
【讨论】:
super 构造函数调用现在将是:super(DOM.createElement("p"));
DOM 类是老式GWT。
.cast() 和 (Element) 演员给我带来了麻烦(尽管事后看来我发现我做错了什么)。我去掉了额外的演员表,它也起作用了。 super( Document.get().createPElement());
.cast() 调用和(Element) 演员;没有它们它确实有效。感谢@checketts 的说明。
如果您需要一个可以包含其他小部件的段落小部件,您可以使用FlowPanel:
FlowPanel panel = new FlowPanel(ParagraphElement.TAG);
panel.add(otherWidget);
String-arg constructor 允许使用任何 HTML 标记,并且由于 FlowPanel 扩展了 ComplexPanel,因此您可以在其中附加任何其他小部件。
【讨论】:
你试过HTMLPanel小部件吗?
【讨论】:
不要破坏 Hilbrand Bouwkamp 的答案,因为这是我从中派生出我的答案的地方,我认为可能更有用的版本是在构造函数中采用字符串的版本。 Hilbrand,如果您只想将此添加到您的答案中,请随意,我将删除此答案。
public class PPanel extends SimplePanel {
public PPanel() {
super(Document.get().createPElement());
}
public PPanel(String string) {
super(Document.get().createPElement());
getElement().setInnerText(string);
}
}
这样,不必调用:
PPanel panel = new PPanel();
panel.getElement().setInnerText("Text Here");
我们可以简单地调用:
PPanel panel = new PPanel("Text Here");
【讨论】:
GWT 现在以类似的方式拥有 PreElement 以及所有其他元素。
【讨论】: