2011-09-15 36 views
2

我遇到以下問題。 我創建了JTreeTable和一個擴展了AbstractTreeTableModel的模型。 問題是我的數據僅在每次插入操作後調用fireTreeStructureChanged()方法時才顯示。實際上,如果我簡單地使用fireTreeNodesInserted()方法,則什麼都不會發生。JTreeTable顯示問題

此外,只有在添加/刪除事件後,我的行中的數據纔會更新,如果它們只是簡單更改其值,則只有在點擊表格後纔會更新它們。

這怎麼可能?

EDIT

當我打電話fireTreeStructureChanged(),然後它調用方法fireTableDataChanged();而不是fireTreeNodesInserted(int firstRow,int lastRow)調用fireTableRowsInserted();但也許我傳遞給它不正確的參數......我必須通過第一行和最後一行?

+0

愚蠢的問題,但你確定你使用'fireTreeNodesInserted()'方法時包含正確的索引和路徑? – sethro

+0

正確的觀察......我怎麼檢查這個呢?因爲我不確定我是否理解我是如何填充這些數組的......我嘗試一個例子:我有一個根節點R,然後我第一次添加一個節點A,然後A1到A,最後B到R.一個非常簡短的結構。創建傳遞模型的表時插入根節點。爲了將節點A添加到R,我調用了fireTreeNodesInserted(R,path,index,A);你能向我解釋正確的參數嗎?謝謝! – marco

+0

最有可能的是,你做的解僱錯了(這有點混亂,最好的解釋是在API文檔TreeEvent,從我的頭頂)看看DefaultTreeModel的一個工作示例 – kleopatra

回答

1

爲了減輕事件激發的疼痛,SwingX有一個輔助類TreeModelSupport這是該項目

的可用獨立編輯

:-)一個很好的測試1的標準方法:1在TreeModelEvent和TreeModelListener中的api doc的映射,讀它會幫助你理解。

+0

謝謝,但我會理解標準方式。 .. – marco

+0

我也推薦使用SwingX幫助器類或更好的,JXTreeTable而不是JTreeTable,這是一個真正的痛苦。 – Stephan