我正在構建一個JTreeTable。我發現了一些入門代碼,並且已經非常成功。最終,我的目標是能夠在不同層次上擁有不同的數據,如分層列表。JTreeTable的動態列
目前,我有它處理不同級別的數據。然而,當談到改變列作爲下一個目標時,我正遇到困難。從我目前站在我有3個里程碑:
- 顯示不同的列集合供不同層次的
- 能夠調整列寬爲不同層次
- 保證檯面的JTree的部分一直保持到左
我越來越接近收盤這項任務,但再次停留在第一項3.
由於製作JTreeTable複雜,微量嗯例如利用圖像中的下列幾類:
我很高興代碼發佈到任何類的,但我也不想堵塞無用的代碼的問題。首先讓我展示我想要的功能。
第一個圖像是當選擇頂層時,第二個圖像是當第二個層次被選中。注意列的不同。這就是我想要在我的應用程序中發生的事情。
選擇頂級:
第二級選擇:
所以我試圖解決這個問題的一種方式,當列表選擇在此部分代碼內更改:
ListSelectionListener listener = (ListSelectionEvent e) -> {
TreeTableModelAdapter adapter = (TreeTableModelAdapter) JTreeTable.this.getModel();
//Need to see why this breaks.
JTreeTable.this.getTableHeader().setColumnModel(adapter.getColumnModel());
};
this.getSelectionModel().addListSelectionListener(listener);
此代碼在JTreeTable的初始化中。我曾嘗試在TableHeader和表格上設置列模型。下面是當我選擇一排,然後什麼發生了:
列只是消失在我身上。列模型的建立在TreeTableModelAdapter
類是發生以下方法:
public TableColumnModel getColumnModel(){
DefaultTableColumnModel model = new DefaultTableColumnModel();
for(int i=0;i<getColumnCount();i++){
TableColumn column = new TableColumn();
column.setIdentifier(getColumnName(i));
model.addColumn(column);
}
return model;
}
任何方向將是非常有益的。再次高興地發佈您認爲可能有助於回答問題的任何代碼。只需發表評論,我將立即添加。