0

我是 smartGWT 的新手。我在以下链接中看到了一个教程 http://www.javacodegeeks.com/2011/01/advanced-smartgwt-tutorial-part-2.html

这里有两个类,一个是主区域,另一个是导航区域。导航区域包含树节点。当我单击树节点时,它会显示一个弹出窗口,但我想创建一个带有节点单击事件的选项卡。

我尝试了以下方式,但没有奏效。我认为它添加了选项卡,因为主区域已经加载它没有任何效果

主要区域类具有以下代码:

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().

即使MainAreainstance 在内部被初始化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>)inNavigationTreeGrid.createTab()来填充选项卡。

您的代码如我上面提到的那样工作,但可以改进。检查“ SmartGWT ListGrid final ”以获取另一种创建简单屏幕的方法。

于 2013-05-07T20:58:08.493 回答
1

您需要调用scenarioTab.setPane(canvas)并向新选项卡添加一些内容。可能是其他问题,但您没有发布足够的代码。

于 2013-05-07T05:13:08.370 回答
-1
addNodeClickHandler(new NodeClickHandler() {            
        @Override
        public void onNodeClick(NodeClickEvent event) {
            scenario_Name = event.getNode().getName();
            obj.topTabSet.addTab(createTab(scenario_Name));
           obj.topTabSet.redraw();
        }
    });

}

只是 obj.topTabSet.redraw(); 将解决问题。所以在这里,每当我们单击节点时,它都会创建选项卡并重绘选项卡集。

于 2013-05-09T07:52:56.257 回答