0

セル内の小さな矢印をクリックすると子が開く Java gwt に CellTree 構造を実装しました。矢印を明示的にクリックするのではなく、セル自体をクリックするだけでサブツリーを開くことはできますか?

public class SomeCellTree extends Composite {


    private SelectionModel selectionModel;
    private CellTree cellTree;



    private class SomeTreeViewModel implements TreeViewModel {
         @Override
         public <T> NodeInfo<?> getNodeInfo(T value) {
             ...
         }

         @Override
         public boolean isLeaf(Object value) {
             ...
         }  
    }



    public SomeCellTree(...) {

       this.selectionModel = new SingleSelectionModel();
       this.selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
           @Override
           public void onSelectionChange(SelectionChangeEvent event) {
                         ...
           }
       });

       cellTree = new CellTree(new SomeTreeViewModel(),null,RESOURCES);
       initWidget(cellTree);

    }


}
4

1 に答える 1

1

選択した DTO のノードを見つけるには再帰を使用する必要がありsetChildOpen、サブツリーを開くために呼び出す必要があります。このようなもの:

this.selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
    @Override
    public void onSelectionChange(SelectionChangeEvent event) {
         T selectedObj = selectionModel.getSelectedObject();
         TreeNode rootNode = cellTree.getRootTreeNode();
         openTree(rootNode,T);
    }
});


private void openTree(rootNode node,T object) {
    for (int i = 0; i < node.getChildCount(); i++) {
        if (!node.isChildLeaf(i)) {
            find(node.setChildOpen(i, true));
            if (node.getValue().equals(T)) 
                return;
        }
    }
}
于 2013-02-12T09:09:09.763 に答える