在gwt树型菜单基础上动态加载视图

经常有这样的需求,类似gwt showcase,左边是树型菜单,右边是动态的视图。

但是gwt showcase是为了展示功能,代码看上去很复杂,比如包括样式的处理、延时加载等等。

这里写了一个最简单的gwt应用,示意性的实现类似功能。

image

这个示例不包含样式方面的东西,比较丑陋。而且右边的widget也比较简单,就是一个html。

代码十分简单,因此不给出源代码了。

以下说明实现的步骤。

首先,在eclipse下创建一个gwt项目。然后在html页面中加入一个div:

    <table align="center">
      <tr>
        <td colspan="2" style="font-weight:bold;">Please enter your name:</td>       
      </tr>
      <tr>
        <td id="nameFieldContainer"></td>
        <td id="sendButtonContainer"></td>
      </tr>
    </table>
    <div id="treeDemo"></div>
  </body>
</html>

 

然后,在client中的EntryPoint代码中加入:

        // Add a handler to send the name to the server
        MyHandler handler = new MyHandler();
        sendButton.addClickHandler(handler);
        nameField.addKeyUpHandler(handler);

        this.initTreeDemo();
    }

    private Map<TreeItem, Widget> treeItems = new HashMap<TreeItem, Widget>();

    private void initTreeDemo() {
        HorizontalPanel treeDemoPanel = new HorizontalPanel();
        RootPanel.get("treeDemo").add(treeDemoPanel);

        Tree mainMenu = new Tree();
        treeDemoPanel.add(mainMenu);

        TreeItem item = mainMenu.addItem("统计");
        treeItems.put(item.addItem("根据地域统计"), new HTML("》》根据地域统计"));
        treeItems.put(item.addItem("根据产品统计"), new HTML("》》根据产品统计"));

        final SimplePanel panel = new SimplePanel();
        panel.add(treeItems.get(mainMenu.getItem(0).getChild(0)));

        mainMenu.addSelectionHandler(new SelectionHandler<TreeItem>() {

            @Override
            public void onSelection(SelectionEvent<TreeItem> event) {
                if (treeItems.get(event.getSelectedItem()) != null) {
                    panel.clear();
                    panel.add(treeItems.get(event.getSelectedItem()));
                }
            }
        });

        treeDemoPanel.add(panel);
    }
}

相关日志

这篇文章上的评论 RSS feed TrackBack URI

留下评论