0

私はsmartGWTが初めてです。次のリンクでチュートリアルを見ました http://www.javacodegeeks.com/2011/01/advanced-smartgwt-tutorial-part-2.html

ここには、メイン エリアとナビゲーション エリアの 2 つのクラスがあります。ナビゲーション領域にはツリー ノードが含まれます。ツリーノードをクリックするとポップアップが表示されるのですが、ノードのクリックイベントでタブを作成したいです。

次の方法で試しましたが、うまくいきませんでした。メインエリアがすでにロードされているため、タブが追加されたと思いますが、効果はありません

メイン エリア クラスには次のコードがあります。

public class MainArea extends SectionStack {

final TabSet topTabSet = new TabSet();

public static MainArea mainareaobj;
public static MainArea getInstance()
{
    if(mainareaobj==null)
    {
        mainareaobj=new MainArea();
    }
    return mainareaobj;
}
public MainArea() {

    super();
    this.setOverflow(Overflow.AUTO);

    topTabSet.setTabBarPosition(Side.TOP);  
    topTabSet.setTabBarAlign(Side.LEFT);
    SectionStackSection section2 = new SectionStackSection("TabSection2");  
    section2.setExpanded(true);  
   section2.addItem(topTabSet);


    this.addSection(section2);
}

次のコードはナビゲーショングリッドです

public class NavigationTreeGrid extends TreeGrid {
public String scenario_Name;
public Tab scenarioTab;
MainArea obj=MainArea.getInstance();
public NavigationTreeGrid() {
    setShowOpenIcons(false);
    setShowDropIcons(false);
    setShowSelectedStyle(true);  
    setShowPartialSelection(true);  
    setCascadeSelection(false);
    setCanSort(false);
    setShowConnectors(true);
    setShowHeader(false);
    setLoadDataOnDemand(false);
    setSelectionType(SelectionStyle.SINGLE);

    Tree data = new Tree();
    data.setModelType(TreeModelType.CHILDREN);

    data.setRoot(
            new TreeNode("root", 
                    new TreeNode("rootNode",
                            new TreeNode("Node1"), new TreeNode("Node2"),new TreeNode("Node3"),new TreeNode("Node4"),new TreeNode("Node5"))) 

    );

    setData(data);

    addNodeClickHandler(new NodeClickHandler() {            
        @Override
        public void onNodeClick(NodeClickEvent event) {
            scenario_Name = event.getNode().getName();

            obj.topTabSet.addTab(createTab(scenario_Name));

        }
    });

}

public Tab createTab(String tabName)
{
    scenarioTab=new Tab(tabName);
    scenarioTab.setCanClose(true);
    //scenarioTab.setWidth(300);
    return scenarioTab;
}    

助けてくれませんか

4

3 に答える 3

1

のプライマリ表示コンポーネントにナビゲーション ツリーとセクション スタックを適切に追加しEntryPoint.onModuleLoad()ます。

MainAreaインスタンスは内部NavigationTreeGridで初期化されますが、レイアウトに個別に追加する必要があります。

public void onModuleLoad() {
        HStack drawArea = new HStack();
        drawArea.setWidth100();
        drawArea.setHeight100();

        drawArea.addMember(new NavigationTreeGrid());
        drawArea.addMember(MainArea.getInstance());

        drawArea.draw();
}

これにより、グリッドが作成され、ノードのクリック イベントによって、新しいが空のタブがタブ セットに追加されます。タブを設定するにはscenarioTab.setPane(<tab content>)、 inを使用する必要があります。NavigationTreeGrid.createTab()

あなたのコードは上で述べたように機能しますが、改善することができます。簡単な画面を作成する別の方法については、 「 SmartGWT ListGrid final 」を確認してください。

于 2013-05-07T20:58:08.493 に答える