2016-11-01 62 views
2

我需要知道如何將我自己的對象設置爲gwt TreeItem。使用包裝來獲取gwt TreeItem的隱藏信息

我需要看到一個字符串,但同時我必須有關於該特定TreeItem的其他信息。

謝謝大家。

+1

看看http://stackoverflow.com/questions/40320966/set-widget-to-treeitem-on-gwt?rq=1 – Strelok

+0

我找不到任何文檔。我必須實施一些具體的方法嗎?怎麼樣?因爲如果我實現「asWidget」方法,我必須返回一個小部件,但所有部件對我來說都沒用。我需要實現我自己的對象,但我仍然不明白如何正確設置樹iteitem。 – Peduz

回答

0

您可以擴展TreeItem和一些屬性添加到它,例如:

public class MyTreeItemWidget extends TreeItem { 

    private int hiddenValue; 

    public MyTreeItemWidget(String text, int hiddenValue) { 
     setText(text); 
     this.hiddenValue = hiddenValue; 
    } 

    public int getHiddenValue() { 
     return hiddenValue; 
    } 
} 

然後你就可以得到TreeItem,例如tree.getSelectedItem()。要獲得額外的屬性,你需要將它投射到MyTreeItemWidget。例如:

((MyTreeItemWidget) tree.getSelectedItem()).getHiddenValue() 

下面是簡單的例子代碼:

TreeItem root = new TreeItem(); 
root.setText("root"); 

for(int i = 0; i < 10; i++) { 
    MyTreeItemWidget item = new MyTreeItemWidget("Node " + Integer.toString(i), i); 
    root.addItem(item); 
} 

final Tree tree = new Tree(); 
tree.addSelectionHandler(new SelectionHandler<TreeItem>() { 
    @Override 
    public void onSelection(SelectionEvent<TreeItem> event) { 
     Window.alert("Selected value is " + Integer.toString(((MyTreeItemWidget) event.getSelectedItem()).getHiddenValue())); 
     // -- or -- 
     Window.alert("Selected value is " + Integer.toString(((MyTreeItemWidget) tree.getSelectedItem()).getHiddenValue())); 
    } 
}); 

tree.addItem(root); 
root.setState(true); 

SelectionHandler你可以得到從事件或從樹中選擇TreeItem

+0

我不知道爲什麼我沒有想過以前。謝謝。我會盡快嘗試 – Peduz

+0

對不起,但它不起作用......我認爲演員不行。 – Peduz

+0

我測試過這段代碼。哪裏不對? – Adam