我面臨的問題是JTree的樹模型。從JTree中的文本文件動態填充樹模型
我已經定義爲根節點:
javax.swing.tree.DefaultMutableTreeNode rootNode = new javax.swing.tree.DefaultMutableTreeNode(projectName);
當第一次啓動該應用程序,我想的TreeModel要創建和加載。 對於這一點,我使用的文件meta.txt,其具有類似於下面的信息:
1QuotesPrice.Job
2QuotesPrice.Df
1Quotes.Job
2Quotes.Wf
3Quotes.Df
2Falkeblang.Wf
3Falkeblang.Df
第一列是水平,第二個是該樹的節點。 現在基於這些信息,我想創建樹模型,但在這裏面臨着障礙。
我不確定適用於將上述節點添加到根節點的邏輯。 我嘗試過的每一件事似乎都有缺陷。 這裏的問題是沒有水平是不固定的,所以我不能簡單地使用if-else構造。 我使用下面的代碼:
String treeMeta=this.projectsDir+"\\"+projectName+"\\"+"meta.txt";
DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(projectName);
File f1=new File(treeMeta);
inputStream = new Scanner(f1);
while(inputStream.hasNext()){
String val=inputStream.next();
System.out.println("[email protected]#$%"+val+"[email protected]#$%");
treeNodePrev=treeNode;
prevLevel=level;
level=val.substring(0,1);
nodeVal=val.substring(1);
if(level.equals("1")){
prevNode=projectName;
treeNode = new DefaultMutableTreeNode(nodeVal);
System.out.println("added to root node");
rootNode.add(treeNode);
//System.out.println("added to root node");
}else if(Integer.parseInt(level)>Integer.parseInt(prevLevel)){
prevNode=nodeVal;
treeNode = new DefaultMutableTreeNode(nodeVal);
treeNodePrev.add(treeNode);
}else if(Integer.parseInt(level)==Integer.parseInt(prevLevel)){
prevNode=nodeVal;
treeNode = new DefaultMutableTreeNode(nodeVal);
prevParentTreeNode=(DefaultMutableTreeNode)treeNodePrev.getParent();
//System.out.println(prevParentTreeNode.getParent().toString());
prevParentTreeNode.add(treeNode);
}
}
jProjectTree.setModel(new javax.swing.tree.DefaultTreeModel(rootNode));
jScrollPane2.setViewportView(jProjectTree);
這似乎是工作的罰款,但任何人都可以請告訴我,如果這是正確的做法?
顯示您嘗試過的內容(作爲SSCCE)以及它如何無法正常工作 – kleopatra
增加了實現代碼,目前它的工作狀況良好,但我不確定這是否是更聰明的方法。 – vhora