如何创建动态树菜单EXT-GWT(GXT)

时间:2012-06-17 12:11:57

标签: java gwt gxt

有人可以建议我如何创建一个数据库驱动的Tree Menu来调用表单吗?

我创建了一个树状菜单,但它是硬编码的(不是动态的)。我还必须为每个菜单项引入一些点击事件来调用表单。但我不确定如何去做这件事。

所以我的问题是如何动态创建树状菜单以及处理点击事件以调用任何表单(也是动态的)的技术是什么?

2 个答案:

答案 0 :(得分:0)

首先,你需要树的一些部分,正如你所说的硬编码。您可以使用此数据查询数据库,获取所需数据以及创建任何内容(复选框,树项目等)并将其添加到树中。您不必担心为所有内容指定不同的名称,只需确保您的听众是正确的。

答案 1 :(得分:0)

请找到创建动态树的代码。在这里我从文本框中获取数据并将其添加到树中。

HorizontalPanel hpanl = new HorizontalPanel();

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

        @Override
        public void onSelection( SelectionEvent<TreeItem> event ) {

            tbox.setText( getChildToParentRoot( event ) );
            System.out.println("Height::"+event.getSelectedItem().getOffsetHeight()+"Weight::"+event.getSelectedItem().getOffsetWidth());
            System.out.println( "Selected::" + event.getSelectedItem().getParentItem() );
            Window.alert( "Selected Item:" + event.getSelectedItem().getParentItem().getText() );

        }

        private String getChildToParentRoot( SelectionEvent<TreeItem> event ) {
            TreeItem child = event.getSelectedItem();
            String st = null;
            while ( child.getParentItem() != null ) {
                st = st + child.getText();
                child = child.getParentItem();
            }
            st = st + child.getText();

            return st;
        }

    } );

    hpanl.setBorderWidth( 1 );
    hpanl.setSpacing( 5 );
    hpanl.add( option );
    Button subtbtn = new Button( "Add" );
    subtbtn.addClickHandler( new ClickHandler() {

        @Override
        public void onClick( ClickEvent event ) {
            String option1 = option.getText();
            System.out.println( "TextBox Value::" + option1 );
            if ( tree.getSelectedItem() == null ) {
                tree.addItem( new TreeItem( option1 ) );
            }
            else {

                TreeItem current = tree.getSelectedItem();

                current.setSelected( false );
                current.addItem( new TreeItem( option1 ) );
            }

        }
    } );
    Button delete = new Button( "Delete" );
    delete.addClickHandler( new ClickHandler() {

        @Override
        public void onClick( ClickEvent event ) {
            tree.getSelectedItem().remove();

        }
    } );
    hpanl.add( subtbtn );
    hpanl.add( delete );
    VerticalPanel vpanel = new VerticalPanel();

    vpanel.add( tree );
    hpanl.add( tbox );
    hpanl.add( vpanel );
    RootPanel.get().add( hpanl );
相关问题