Ich baue eine JTreeTable. Ich habe einen Startcode gefunden und bin ziemlich weit gekommen. Letztendlich ist es mein Ziel, verschiedene Daten auf verschiedenen Ebenen wie eine hierarchische Liste zu haben.Dynamische Spalten für JTreeTable
Derzeit habe ich es mit Daten auf verschiedenen Ebenen arbeiten. Ich renne jedoch gegen eine Wand, wenn es darum geht, die Säulen als nächstes Ziel zu wechseln. Von dort, wo ich zur Zeit stehe ich habe 3 weitere Meilensteine:
- zeigen andere Gruppe von Spalten für die verschiedenen Ebenen
- Fähigkeit Spaltenbreiten für die verschiedenen Ebenen
- Sicherstellen, dass der JTree Teil der Tabelle einzustellen bleibt immer nach links
ich bin immer in der Nähe, diese Aufgabe zu schließen, sondern wieder bei der ersten dieser
3. stecken ein JTreeTable ist komplex Seit der Erstellung der minim um Beispiel nutzt mehrere Klasse im Bild unten aufgeführt:
Ich bin glücklich, den Code zu einem dieser Klassen zu schreiben, aber ich habe auch nicht, dass die Frage mit nutzlosem Code verstopfen. Lassen Sie mich zuerst die Funktionalität zeigen, die ich möchte.
Das erste Bild ist, wenn die oberste Ebene ausgewählt ist und das zweite Bild ist, wenn die zweite Ebene ausgewählt ist. Beachten Sie, dass die Spalten unterschiedlich sind. Das möchte ich in meiner Bewerbung machen.
Top Level ausgewählt:
Zweite Ebene ausgewählt:
So eine Art und Weise habe ich versucht, dieses Problem zu lösen, wird, wenn die Listenauswahl ist innerhalb dieses Codeabschnitts geändert:
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);
Dieser Code befindet sich in der Initialisierung von JTreeTable. Ich habe versucht, das Spaltenmodell sowohl auf dem TableHeader als auch auf der Tabelle zu setzen. Im Folgenden finden Sie, was dann passiert, wenn ich eine Zeile auswählen:
Die Säulen nur auf mich verschwinden. Die Schaffung des Säulenmodell geschieht in der TreeTableModelAdapter
Klasse mit der folgenden Methode:
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;
}
Jede Richtung wäre sehr hilfreich. Ich freue mich schon darauf, einen Code zu veröffentlichen, der Ihrer Meinung nach hilfreich sein könnte, um die Frage zu beantworten. Schreiben Sie einfach einen Kommentar und ich werde es sofort hinzufügen.