2012-03-18 11 views
2

VPanelとHPanelのメンバーを動的に変更する方法は誰にも分かりません。スマートgwt.iのvpanelのメンバーを変更すると、クリックイベントでラベルを変更したいのですが、問題が発生しています。サンプルコードはこちらをご覧ください。スマートgwtでvPanelのメンバを変更する方法

import com.smartgwt.client.widgets.Button; 
import com.smartgwt.client.widgets.Label; 
import com.smartgwt.client.widgets.events.ClickEvent; 
import com.smartgwt.client.widgets.events.ClickHandler; 
import com.smartgwt.client.widgets.layout.VLayout; 

public class TestingLayout { 

    VLayout layout = new VLayout(); 
    VLayout layout2 = new VLayout(); 
    Label label1; 
    Label label2; 
    Button button1; 
    Button button2; 

    public TestingLayout() { 

     label1 = new Label("Lbl 1"); 
     label2 = new Label("Lbl 2"); 

     button1 = new Button("Add Label 1 "); 
     button2 = new Button("Add Label 2 "); 


     button1.addClickHandler(new ClickHandler() { 

      @Override 
      public void onClick(ClickEvent event) { 
       layout2.clear(); 
       layout2.addMember(label1); 

      } 
     }); 

     button2.addClickHandler(new ClickHandler() { 

      @Override 
      public void onClick(ClickEvent event) { 
       layout2.clear(); 
       layout2.addMember(label2); 

      } 
     }); 

     layout.addMember(button1); 
     layout.addMember(button2); 
     layout2.addMember(label1); 

     VLayout mainLayout = new VLayout(); 
     mainLayout.addMember(layout); 
     mainLayout.addMember(layout2); 

     mainLayout.draw(); 

    } 
} 

をご確認ください。

答えて

2

レイアウトのメンバーを変更するには、removeMembers()メソッドとaddMembers()メソッドを使用する必要があります。 ラベルのテキストを変更するだけで使用するだけですlabel.setContents("New COntent")

+0

ありがとう兄弟、私もその方法を見つけましたが、別の方法はありませんか? –

0

私が質問から理解したことは、ボタンをクリックして2番目のラベルを表示したいということです。

VLayout vlayout = new VLayout(); 

    label1 = new Label("Lbl 1"); 
    label2 = new Label("Lbl 2"); 
    label1.setVisible(false); 
    label1.setVisible(false); 

    button1 = new Button("Add Label 1 "); 
    button2 = new Button("Add Label 2 "); 

    button1.addClickHandler(new ClickHandler() { 

     @Override 
     public void onClick(ClickEvent event) { 
      label1.show(); 
      label1.setVisible(true); 
     } 
    }); 

    button2.addClickHandler(new ClickHandler() { 

     @Override 
     public void onClick(ClickEvent event) { 
      label2.show(); 
      label2.setVisible(true); 
     } 
    }); 

    vLayout.addMember(label1); 
    vLayout.addMember(label2); 


    VLayout mainLayout = new VLayout(); 
    mainLayout.addMember(layout); 
    mainLayout.addMember(button1); 
    mainLayout.addMember(button2); 

    mainLayout.draw(); 
+0

ありがとう、しかしVPanelのメンバーを変更したいのですが、それを表示して非表示にしたくないのですが、ソリューションがメンバーを削除していて、再度メンバーを追加していることがわかりました。 –

+0

はい、あなたは正しいですが、実行時にメンバーを削除するのではなく、あらかじめ実行できません。 – PVR

関連する問題