我的問題也與這個鏈接有關。 http://docs.oracle.com/javase/tutorial/uiswing/components/tree.html#data在jtree中編輯節點值時,我需要一個偵聽器來跟蹤,但我應該怎麼做?
我正在修改使用Jtree的解析器程序。在我的程序中創建Jtree的方式與我在上面發佈的鏈接中的示例非常相似。我們稱之爲CREATE-JTREE-METHOD-1。
DefaultMutableTreeNode top =
new DefaultMutableTreeNode("The Java Series");
createNodes(top);
tree = new JTree(top);
...
JScrollPane treeView = new JScrollPane(tree);
...
private void createNodes(DefaultMutableTreeNode top) {
DefaultMutableTreeNode category = null;
DefaultMutableTreeNode book = null;
category = new DefaultMutableTreeNode("Books for Java Programmers");
top.add(category);
book = new DefaultMutableTreeNode(new BookInfo
("The Java Tutorial: A Short Course on the Basics",
"tutorial.html"));
category.add(book);
...
}
基本上與一個JTree「頂部」節點被首先創建,然後用文本值的節點進行「添加」到「頂部」節點,因爲它們被解析出來。
我的工作是嘗試手動更改單個節點的值,並在此事件偵聽器中執行某些操作。
在我發佈的同一鏈接的「動態更改樹」部分。它提供了下面的例子來實現節點更改偵聽器,
rootNode = new DefaultMutableTreeNode("Root Node");
treeModel = new DefaultTreeModel(rootNode);
treeModel.addTreeModelListener(new MyTreeModelListener());
tree = new JTree(treeModel);
然而,此JTree使用DefaultTreeModel的構造(我們稱之爲CREATE-JTree的法-2)。它沒有提供關於如何將數據添加到模型的示例代碼。
我不知道是否有方法從用方法1創建的Jtree中獲取數據模型,然後使用addTreeModelListener()方法如圖所示?換句話說,方法1確實也使用了DefaultTreeModel嗎?
我試圖尋找類似getDefaultTreeModel()的東西,但沒有成功。
如果上面的樹模型的東西不起作用,任何其他方式我可以做一個軌道到Jtree上更改節點值?
由於提前,
'JTree#getModel()#addTreeModelListener' ...監聽器合約在「TreeMode」中指定l'。將一個節點傳遞給'JTree'只是簡單地將它包裝在一個'DefaultTreeModel'中......或者其他的一些 – MadProgrammer 2014-09-22 09:02:01
* grml *我沒有閱讀你的評論@MadProgrammer - 會爲我節省很多工作^^:非常精確,非常正確! – 2014-09-22 10:42:48
@MadProgrammer謝謝你的回覆。另一個簡短的問題是,我想在更改節點之前和之後獲取值。我注意到在用戶界面中單擊選擇節點,第二次點擊會將其置於編輯模式。爲了在編輯之前獲得值,我不希望在每次節點被SELECTED時讀取,但是在EDITED之前。任何聽衆都只是爲了那個? – user1559625 2014-09-22 11:15:38