回答
您將需要實現TreeCellRenderer的CustomCellRenderer,並將其附加到JTree。
在你的CustomCellRenderer中,你可以放置按鈕和圖標。
JTree tree = new JTree(rootVector);
TreeCellRenderer renderer = new CustomCellRenderer();
tree.setCellRenderer(renderer);
檢查這個例子:(上面的代碼中引用從這裏)
http://www.java2s.com/Code/Java/Swing-JFC/TreeCellRenderer.htm
您可以將TreeCellRenderer添加到您的JTree。該渲染器可以在樹的每個元素上渲染一個圖標。
從JTree的Javadoc中:
要使用的JTree顯示化合物節點(例如,同時包含一個圖形圖標和文本節點),子類
javax.swing.tree.TreeCellRenderer
並使用setCellRenderer
通知樹使用它。
複合節點是你想要的。你必須實現單一的方法,這將返回一個Composite
對象,在你的情況下,一個包含一個按鈕和一個標籤並排的小面板。
鉗,
您是否有這樣的成功?我想要做同樣的事情,並且很難讓JButton響應用戶。設置渲染器讓按鈕顯示順利,但所有鼠標事件都由JTree自己處理,而不是傳遞給我的按鈕。
我終於找到了解決辦法,我想我會在這裏發佈爲他人評論(也許還有更好的辦法嗎?)
除了我的自定義渲染,我還創建了一個擴展DefaultTreeCellEditor中自定義編輯器。我的自定義渲染器通過構造函數傳遞到自定義編輯器中。在編輯器中,我重寫isCellEditable以返回true,並重寫getTreeCellEditorComponent以返回renderer.getTreeCellRendererComponent。這是關鍵。它返回渲染器組件,這樣所有的點擊都會被傳遞到我的自定義渲染器中的面板中,然後我的JButton會正常響應動作事件。
這裏是我的編輯:
public class MyTreeCellEditor extends DefaultTreeCellEditor {
public MyTreeCellEditor(JTree tree, DefaultTreeCellRenderer renderer) {
super(tree, renderer);
}
public Component getTreeCellEditorComponent(JTree tree, Object value,
boolean isSelected, boolean expanded, boolean leaf, int row) {
return renderer.getTreeCellRendererComponent(tree, value, true, expanded, leaf, row, true);
}
public boolean isCellEditable(EventObject anEvent) {
return true; // Or make this conditional depending on the node
}
}
在你的樹,一定要設置您的自定義編輯器:
myTree.setCellEditor(new MyTreeCellEditor(myTree, (DefaultTreeCellRenderer) myTree.getCellRenderer()));
- 1. Swing JFrame:如何將自定義按鈕添加到jframe標題
- 2. 自定義圖形 - Java Swing
- 3. Java Swing:將按鈕添加到TitledBorder
- 4. 將自定義按鈕添加到Sharepoint 2013列表項目
- 5. 將自定義按鈕添加到SlickGrid?
- 6. 將自定義按鈕添加到Galleria
- 7. Android - 將項目添加到按鈕上的自定義列表視圖點擊
- 8. 添加自定義字體到一個酒吧按鈕項目
- 9. 自定義項目添加到單選按鈕,在ExtJS的
- 10. 將「擴展」按鈕添加到沒有子項的JTree節點?
- 11. 添加自定義按鈕
- 12. 圖像未添加到項目添加到自定義列表
- 13. 如何將按鈕添加到自定義視圖?
- 14. android - 將按鈕添加到自定義視圖
- 15. 如何將圖像添加到自定義按鈕
- 16. 將按鈕添加到Android中的自定義視圖中
- 17. XPages:將按鈕添加到數據視圖自定義控件
- 18. 將按鈕添加到c#mvc項目
- 19. 將自定義樣式添加到QTableview中添加的按鈕
- 20. Java:將圖形項添加到框架
- 21. 將自定義圖像添加到Ext.tab.Panel上的項目
- 22. 將項目添加到自定義列表視圖
- 23. 將自定義項目添加到Swift中的表格視圖
- 24. 如何自定義HTML或按鈕添加到ActiveAdmin形式
- 25. 添加自定義項目到TShellTreeView
- 26. 將自定義索引添加到JTree節點
- 27. 如何將按鈕添加到Java中的圖形框架?
- 28. 將按鈕添加到使用java圖形的contentPane
- 29. 在Java Swing中將按鈕添加到JPanel
- 30. 添加自定義按鈕的UITabBarController(中間添加按鈕)
+1。 1.5年過去了,這對我們有很大的幫助。謝謝。 – sqram 2012-02-26 20:08:42
+1。我只使用了TreeCellEditor接口,因爲DefaultTreeCellEditor有很多不必要的功能。 – Nulano 2015-08-24 09:29:56