Morgen liebe Gemeinde. 
Ich habe heute zum ersten Mal mit der JTree Komponente gearbeitet, besser gesagt mit der erweiterten JXTree aus SwingX.
Ich wollte gerne eine Art Verzeichnis anzeigen lassen, die vom Aussehen dem gleich kommt was ich aus ThunderBird3 kenne (die Konten-Darstellung auf der linken Seite).
Bildchen: http://ubuntublog.ch/wp-content/upl...osteingang-Mozilla-Thunderbird-3.0-Beta-4.png
JTree ist ansich recht intuitiv, aber folgende Dinge bekam ich bisher nicht hin:
- Bei Selektion/Fokusierung eines Nodes soll der Hintergrundbalken über die ganze verfügbare Breite gehen
- die Nodes auf Ebene 1 (root = Ebene 0) sollen keinen Abstand zum Rand haben
Ich habe erstmal angefangen mir einen TreeCellRenderer zu schreiben und habe dafür von DefaultTreeCellRenderer geerbt. Mein erster Gedanke war, da es sich im Prinzip um ein JLabel handelt einfach die PrefSize auf die Größe des verfügbaren Platzes zu setzen. Das löste scheinbar das erste Problem, aber wenn sich die verfügbare Breite ändert, dann junkt es dem Note nicht. :-/
Ist eine eingebettete Klasse. Der Tree wird übrigens in ein JScrollPane gepackt und dieses wiederum in eine JSplitPane. D.h. der verfügbare Platz, die Breite, wird von der JSplitpane bestimmt.
Das Problem mit der dynamischen Pref-Änderung liegt aber wohl am ScrollPane, oder?
Was ich von euch nun gerne wissen möchte ist
1. bin ich auf dem richtigen Weg?
2. Habt ihr Tips für meine beiden Probleme? (Quellcode müsst ihr nicht extra schreiben)
Gruß
CroniD
Ich habe heute zum ersten Mal mit der JTree Komponente gearbeitet, besser gesagt mit der erweiterten JXTree aus SwingX.
Ich wollte gerne eine Art Verzeichnis anzeigen lassen, die vom Aussehen dem gleich kommt was ich aus ThunderBird3 kenne (die Konten-Darstellung auf der linken Seite).
Bildchen: http://ubuntublog.ch/wp-content/upl...osteingang-Mozilla-Thunderbird-3.0-Beta-4.png
JTree ist ansich recht intuitiv, aber folgende Dinge bekam ich bisher nicht hin:
- Bei Selektion/Fokusierung eines Nodes soll der Hintergrundbalken über die ganze verfügbare Breite gehen
- die Nodes auf Ebene 1 (root = Ebene 0) sollen keinen Abstand zum Rand haben
Ich habe erstmal angefangen mir einen TreeCellRenderer zu schreiben und habe dafür von DefaultTreeCellRenderer geerbt. Mein erster Gedanke war, da es sich im Prinzip um ein JLabel handelt einfach die PrefSize auf die Größe des verfügbaren Platzes zu setzen. Das löste scheinbar das erste Problem, aber wenn sich die verfügbare Breite ändert, dann junkt es dem Note nicht. :-/
Ist eine eingebettete Klasse. Der Tree wird übrigens in ein JScrollPane gepackt und dieses wiederum in eine JSplitPane. D.h. der verfügbare Platz, die Breite, wird von der JSplitpane bestimmt.
Java:
private class DataOverviewTreeCellRenderer extends DefaultTreeCellRenderer {
private int width = 0;
public DataOverviewTreeCellRenderer() {
super();
}
@Override public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean selected, boolean expanded, boolean leaf, int row,
boolean hasFocus) {
super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
if (splitpane.getLastDividerLocation() <= 0) {
width = splitpane.getDividerLocation();
} else {
width = splitpane.getLastDividerLocation();
}
this.setPreferredSize(new Dimension(width, this.getPreferredSize().height));
return this;
}
}
Was ich von euch nun gerne wissen möchte ist
1. bin ich auf dem richtigen Weg?
2. Habt ihr Tips für meine beiden Probleme? (Quellcode müsst ihr nicht extra schreiben)
Gruß
CroniD
Zuletzt bearbeitet: