Hi,
habe aktuell ein kleines Problem und zwar versuche ich mit einem TreeTableModel eine entsprechende TreeTabel mit 3 Spalten aufzubauen.
Spalte 1 hat einen ganz normalen Baum, das funktioniert auch wunderbar, aber Spalte 2 und 3 sollen jetzt JToggleButtons werden.
Ich habe noch nicht so intensiv damit gearbeitet aber nur mal rein vom Verständnis her gebe ich doch in der Methode:
an was für eine Object(Klasse) in der jeweiligen Spalte steckt.
Und mit der Methode:
definiere ich dann das Object was in der jeweiligen Spalte ist?!
Hier mal etwas konkreter zur Vereinfachung mit nur einer Spalte:
Das funktioniert auch soweit, er zeigt mir dann in der enstprechenden Spalte das Icon an.
Nur würde ich jetzt gerne etwas ausführen, wenn der Benutzer auf das Icon clickt, leider lässt sich
dem ImageIcon kein Listener mitgeben, daher wollte ich halt eine JComponent reinstecken, z.B. ein Label oder einen ToggleButton
Jetzt ist allerdings das blöde, das er die Swingkomponente nicht darstellt sondern scheinbar die .toString() Methode dieser Komponente aufruft, sprich anstatt den Button darzustellen steht das halt javax.swing.JToggleButton[...]
Hat jemand damit schon Erfahrungen?
Gruß
habe aktuell ein kleines Problem und zwar versuche ich mit einem TreeTableModel eine entsprechende TreeTabel mit 3 Spalten aufzubauen.
Spalte 1 hat einen ganz normalen Baum, das funktioniert auch wunderbar, aber Spalte 2 und 3 sollen jetzt JToggleButtons werden.
Ich habe noch nicht so intensiv damit gearbeitet aber nur mal rein vom Verständnis her gebe ich doch in der Methode:
Code:
public Class getColumnClass(int column){}
an was für eine Object(Klasse) in der jeweiligen Spalte steckt.
Und mit der Methode:
Code:
public Object getValueAt(Object node, boolean expanded, int row, int column){}
definiere ich dann das Object was in der jeweiligen Spalte ist?!
Hier mal etwas konkreter zur Vereinfachung mit nur einer Spalte:
Code:
public Class getColumnClass(int column){
if(column == 0){
return ImageIcon.class;
}
return Object.class;
}
public Object getValueAt(Object node, boolean expanded, int row, int column){
if(column == 0){
return new ImageIcon(/*Irgend ein Icon*/);
}
return null;
}
Das funktioniert auch soweit, er zeigt mir dann in der enstprechenden Spalte das Icon an.
Nur würde ich jetzt gerne etwas ausführen, wenn der Benutzer auf das Icon clickt, leider lässt sich
dem ImageIcon kein Listener mitgeben, daher wollte ich halt eine JComponent reinstecken, z.B. ein Label oder einen ToggleButton
Code:
public Class getColumnClass(int column){
if(column == 0){
return JToggleButton.class;
}
return Object.class;
}
public Object getValueAt(Object node, boolean expanded, int row, int column){
if(column == 0){
JToggleButton myTB = new JToggleButton();
myTB.setIcon(new ImageIcon(/*Irgend ein Icon*/));
return myTB;
}
return null;
}
Jetzt ist allerdings das blöde, das er die Swingkomponente nicht darstellt sondern scheinbar die .toString() Methode dieser Komponente aufruft, sprich anstatt den Button darzustellen steht das halt javax.swing.JToggleButton[...]
Hat jemand damit schon Erfahrungen?
Gruß