2009-10-03 15 views
14

He dibujado un espacio en blanco. ¿GWT tiene un widget que produce la etiqueta HTML P?¿GWT tiene un widget de párrafo?

Quiero que solo aparezca la etiqueta P en el DOM, sin ningún DIV extraño.

Respuesta

2

Si necesita un widget párrafo que puede contener otros widgets, se puede utilizar un FlowPanel:

FlowPanel panel = new FlowPanel(ParagraphElement.TAG); 
panel.add(otherWidget); 

El String-arg constructor permite el uso de cualquier etiqueta HTML, y desde FlowPanel extiende ComplexPanel, puede añadir cualquier otra widgets dentro de ella.

2

¿Has probado el widget HTMLPanel?

+0

Creo que HTMLPanel representa un elemento DIV, no un elemento P. – David

+2

HTMLPanel tiene el constructor HTMLPanel (String tag, String html) por lo que puede ser cualquier elemento –

16

GWT no tiene dicho widget. Pero puedes crear uno fácilmente. SimplePanel tiene un constructor protegido que le permite crear un panel con cualquier etiqueta HTML. Para crear un panel con la etiqueta P, basta con extender la SimplePanel y crear con su propio constructor:

public class PPanel extends SimplePanel { 
    public PPanel() { 
     super(Document.get().createPElement()); 
    } 
    } 
+0

Gracias por esa respuesta Hilbrand. Al hacer que PPanel también implemente HasText, tengo la solución que estaba buscando. – David

+0

Al igual que en la actualización con GWT actual, la llamada del constructor 'super' ahora sería:' super (DOM.createElement ("p")); ' – checketts

+0

@checketts En realidad, usar la clase' DOM' es GWT al estilo antiguo. –

2

no socavar la respuesta de Hilbrand Bouwkamp, ​​porque es donde Derivé mío de, creo una versión posiblemente más útil de esto es uno que toma una cadena en el constructor. Hilbrand, si solo quiere agregar esto a su respuesta, siéntase libre y borraré esta respuesta.

public class PPanel extends SimplePanel { 
    public PPanel() { 
     super(Document.get().createPElement()); 
    } 

    public PPanel(String string) { 
     super(Document.get().createPElement()); 
     getElement().setInnerText(string); 
    } 
} 

De esta manera, en lugar de tener que llamar:

PPanel panel = new PPanel(); 
panel.getElement().setInnerText("Text Here"); 

simplemente se puede llamar:

PPanel panel = new PPanel("Text Here"); 
0

GWT tiene ahora la PreElement junto con todos los demás elementos de una forma similar .

Cuestiones relacionadas