2016-09-13 17 views
0

我有一個JXTreeTable,其數據模型擴展了DefaultTreeTableModel,而CustomNode擴展了AbstractMutableTreeTableNode。每列按預期可編輯,以及分層樹節點。如何將自定義編輯器應用於JXTreeTable中的分層列?

如何將自定義編輯器(TreeTableCellEditor)應用於JXTreeTable中的分層列?

以下幾個嘗試,但沒有取得預期的結果:

treeTable.setCellEditor(editor) 
treeTable.getColumnModel().getColumn(0).setCellEditor(editor) 
treeTable.getColumn(0).setCellEditor(editor) 
treeTable.getColumnExt(0).setCellEditor(editor) 

我能得到用於渲染分層列固有的樹,也無法通過它來指定自定義編輯器。

private JTree getTree(JXTreeTable treeTable){ 
    try{ 
     Field field = JXTreeTable.class.getDeclaredField("renderer"); 
     field.setAccessible(true); 
     return (JTree)field.get(treeTable); 
    }catch(NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException ex){ 
     throw new RuntimeException(ex); 
    } 
} 

似乎有一種「變通」這是previsouly公佈,但我不能訪問頁面內容:http://forums.java.net/jive/message.jspa?messageID=387603 (在https://java.net/projects/swingx/lists/issues/archive/2012-06/message/22

任何線索指定自定義編輯器樹柱?

非常感謝您的反饋。

回答

1

我沒有信譽發表評論,但由於Wayback機器,這是「解決辦法」,由「會」中提到: https://web.archive.org/web/20120831192839/http://www.java.net/node/701358

在任何情況下(如果這個鏈接也被刪除),這裏是「解決方法「答案(這是),由克列奧帕特拉供電:


嗯...你是對的:看起來我們沒有API掛鉤一個自定義編輯器。你能否提出一個問題,以便我們不會忘記?這並不是說將有一個高概率能夠儘快使其解決任何時間,但誰知道

同時,我看到的唯一方法是繼承treetable中並覆蓋getCellEditor,像(志願任何人?):

@override 
public TableCellEditor getTableCellEditor(row, column) { 
    if (isHierachicalColumn(column)) { 
     return myTreeTableCellEditor; 
    } 
    return super.... 
} 

得到那棵唯一的方法(這是一個嚴密保護家庭祕密:)髒:

JXTree tree = (JXTree) treeTable.getCellRenderer(anyrow, getHierarchicalColumn()); 
MyTreeTableCellRenderer r = new MyTreeTableCellRenderer(tree); 

arrgghhh ...

CU 珍


現在,我來試試,如果這個工程,至少要採取任何想法:)

相關問題