我是smartGWT的新手。我在以下链接中看到了一个教程 http://www.javacodegeeks.com/2011/01/advanced-smartgwt-tutorial-part-2.html
这里有两个类,一个是主区,另一个是导航区。导航区域包含树节点。当我单击树节点时,它会显示一个弹出窗口,但我想创建一个带有节点单击事件的选项卡。
我尝试了以下方式,但它没有用。我认为它添加了标签,因为mainarea已经加载它没有产生任何影响
Main Area Class有以下代码:
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;
}
任何PLZ都可以帮助我
答案 0 :(得分:1)
您需要致电scenarioTab.setPane(canvas)
并向新标签添加一些内容。可能是其他问题,但你没有发布足够的代码。
答案 1 :(得分: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>)
中的NavigationTreeGrid.createTab()
来填充标签。
您的代码如上所述,但可以改进。 检查“SmartGWT ListGrid final”以获得另一种创建简单屏幕的方法。
答案 2 :(得分:-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();将解决问题。所以每当我们点击节点时,它都会创建标签并重新绘制标签集。