[英]Java Swing JTree Expansion
此方法按預期方式工作-它創建一個帶有根節點和兩個子容器節點(每個都有各自的葉節點)的JTree:
private JComponent createSideBar()
{
final DefaultMutableTreeNode top = new DefaultMutableTreeNode("Projects");
final JTree tree = new JTree(top);
DefaultMutableTreeNode project = new DefaultMutableTreeNode("project 1");
DefaultMutableTreeNode version = new DefaultMutableTreeNode("version 1");
project.add(version);
top.add(project);
TreePath treePath = new TreePath(project.getPath());
// tree.expandPath(treePath);
project = new DefaultMutableTreeNode("project 2");
version = new DefaultMutableTreeNode("version 2");
project.add(version);
top.add(project);
return tree;
}
在這種情況下,樹開始關閉。 我希望該應用程序從所有節點完全展開開始,因此我首先添加了以下內容:
tree.expandPath(treePath);
但是當我從上面的代碼中取消注釋時,第二組子節點不會顯示,即:Project 2和Version 2不顯示。 實際上,所有隨后添加的節點都不會出現。
對於它的價值,我正在使用JDK 1.5。 從文檔中,我似乎看不到任何限制,或者為什么這種方法會產生不良影響……我將嘗試查看源代碼,但是希望有人可能對這有什么想法和原因有所了解是預期的行為。 我想知道每個后續節點“添加”是否都因某種原因而被禁止-但我無法想象對於大多數運行時用例都可以。
謝謝,
-Luther
不幸的是,Swing通常是“有幫助的”。 在這種情況下,它將根據所提供的數據為您創建模型,與如果您提供Vector
的JList
會創建模型幾乎相同。
JTree
和幫凶(主要是Pluggable Look&Feel)會將偵聽器添加到模型中,以隨時通知更新。 如果僅更改(隱式)模型背后的數據,則除了偶然之外不會更新任何內容。
因此,您應該做的是明確創建一個模型。 當模型數據更改時(當然,始終在EDT上),將引發相關事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.