我正在使用一個DefaultTreeModel
填充覆蓋DefaultMutableTreeNode
它支持可選地更改樹中節點的顯示字符串。如下面的代碼所示,在我的表單中,我通過在一個單獨的類中創建新節點來填充樹,然後通過包裝類將它們傳遞給我的主數據類型。該過程將創建一個新的覆蓋DefaultMutableTreeNode
,爲其添加子項(每個AccessPoint
由具有多個子節點的節點表示),然後將其存儲以供以後在UI中使用。當TreeModel添加新節點時,爲什麼不是我的JTree更新?
第一次以這種方式添加節點時,它的效果非常好。任何後續添加以下代碼的節點實際上都存儲在DefaultTreeModel
中,但JTree
未被更新爲新節點。
爲什麼在添加第一個孩子後JTree
未填充?
private void populateAccessPointTreeModel(AccessPointDataWrapper wrapper) {
//the pre-created DefaultMutableTreeNode subclass instance is
// stored in the wrapper
DefaultMutableTreeNode accessPointNode =
wrapper.getAccessPointTreeNode();
//this line updates the accessPointTree with the new node (I've looked at the
// value in debug mode, and it does in fact add the node
((DefaultMutableTreeNode) accessPointTree.getRoot()).add(accessPointNode);
//unrelated logic happens down here...
}
我可以包括如果有必要,我創建節點的代碼,但我不認爲這是問題。
您是否嘗試過重新繪製組件或其父項? – Bitmap