2009-10-02 10 views
7

私は、その主なウィジェットので、2人の子供を持つコンポジットいますPanel内のGWTウィジェットを置き換えるにはどうしたらいいですか?

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); 
} 

MyCompositeの建設後しばらくは、私は別のウィジェット、新child1のに置き換えること、child1のを交換したいと思います。

panel.remove(child1)を呼び出してchild1を削除してから、新しいパネルをpanel.add(new-child1)を呼び出して追加できます。これはchild2が最初にレンダリングされる原因になるでしょうか?

したがって、パネルの子の順序を変更せずにchild1をnew-child1に置き換えるにはどうすればよいですか?

答えて

10

add()の代わりにinsert()を試してください。それが保護されていますので、

残念ながら、あなたはFlowPanelを拡張する必要があるので、insert()を呼び出すことはできません。

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

は動作するはずです。

+5

前回挿入したのはパブリックメソッドでした。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

えええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええ。 –

+1

1.5では公開されていませんでした:http://google-web-toolkit.googlecode.com/svn/javadoc/1.5/com/google/gwt/user/client/ui/FlowPanel.html –

関連する問題