2009-10-02 17 views
7

Ben böylece asıl Widget iki çocuğu olan bir Kompozit var:Paneldeki GWT parçacığını nasıl değiştirebilirim?

public MyComposite() { 
    child1 = new FlowPanel(); 
    child1.getElement().setId("child1"); 

    child2 = new FlowPanel(); 
    child2.getElement().setId("child2"); 

    panel = new FlowPanel(); 
    panel.add(child1); 
    panel.add(child2); 
    initWidget(panel); 
} 

, başka Widget, yeni-child1 ile değiştirilmesi, child1 dışarı takas etmek istiyorum MyComposite inşaatı bir süre sonra.

Belki de child1 panel.remove (child1) öğesini çağırarak kaldırabilir ve sonra da panel.add (new-child1) öğesini çağırarak yeni widget'ımı ekleyebilirim; ama bu çocuk2'nin ortaya çıkmasına neden olur, değil mi?

Peki, panel1'in alt öğelerinin sırasını değiştirmeksizin, alt1'i yeni-çocuk1 ile nasıl değiştirebilirim?

cevap

10

add() yerine insert()'u deneyin.

Ne yazık ki korunmuş beri, sen insert() diyemezsin, bu nedenle FlowPanel uzatmak gerekir:

public class UsefulFlowPanel extends FlowPanel { 
    public void add (int index, Widget child) { 
     insert (child, getElement(), index, true); 
    } 
} 

çalışmalıdır.

+5

Son kez eklediğim halka açık bir yöntemdi: http://google-web-toolkit.googlecode.com/svn/javadoc/1.6/com/google/gwt/user/client/ui/FlowPanel.html#insert % 28com.google.gwt.user.client.ui.Widget,% 20int% 29 – topchef

+0

Hmm ... Google, o zamanlar için eski bir dokümanı eski sürümüne iade etmiş olmalı. –

+1

: http://google-web-toolkit.googlecode.com/svn/javadoc/1.5/com/google/gwt/user/client/ui/FlowPanel.html –