2014-04-03 124 views
0

這是我的應用程序。更新渲染樹細胞

enter image description here

我想要做的就是讓這個當用戶的詳細信息進行更新,所以確實是在JTree的節點。這可能嗎;即使JTree及其渲染的單元格已經被創建?

我需要一個更新渲染單元的示例,即使它已經被創建。

這裏是我查看代碼:

void createTree() { 

    rootNode = new DefaultMutableTreeNode("users"); 

    for (User user : listOfUsers) { 

     String id = user.getId(); 
     File file = new File(id); 
     DefaultMutableTreeNode node = new DefaultMutableTreeNode(file); 
     rootNode.add(node); 
    } 

    treeModel = new DefaultTreeModel(rootNode); 
    tree = new JTree(rootNode); 
} 

void addTreeModelListener(TreeModelListener a) { 

    treeModel.addTreeModelListener(a); 
} 

void repaintTree() { 

    treeModel.reload(); 
    tree.revalidate(); 
    tree.repaint(); 
} 

這裏是我的控制器代碼:

​​

的想法是一直所做的更改的對象後,我打電話repaintTree()方法。現在仔細查看代碼後,我認爲問題在於我改變了對象細節而不是節點細節,但這只是一種預感。

請儘快回覆,非常感謝。

回答

0

Swing使用MVC架構。

因此,樹中包含的數據和渲染邏輯是完全解耦和獨立的。

您可以簡單地更改樹的內容而無需擔心使用此Oracle Tutorial。 更新後不要忘記撥打revalidate()repaint()方法。

祝你好運。

+0

感謝您的及時回覆和示例。我一直在提及它們,而且目前我仍然有問題需要解決。它的功能雖然是當我拯救時,JTree不重視自己;也許是因爲JTree正在重新驗證,除非它由於某種原因不更新呈現的單元格。 – Kurtiss

+0

您是否調用了重新驗證和重繪? –

+0

是的,我做了,我做了一個樹模型,並嘗試reload()以及。 – Kurtiss