Closed homebeaver closed 1 year ago
Die Annahme, dass TreeTable table
korrekt definiert wurde, ist falsch!!
In der hierarchical-column wird nicht StringValue als "R/G/B: " + color.getRGB()
geliefert, sondern das Ergenis der java.lang.Object.toString()
- Methode, In Class org.jdesktop.test.AncientSwingTeam.NamedColor wir sie überschrieben:
public static class NamedColor extends Color {
String name;
public NamedColor(Color color, String name) {
super(color.getRGB());
this.name = name;
}
...
@Override
public String toString() {
return name;
}
}
Und die liefert damit einen Farbnamen, also "Green", usw.
Der BUG ist in der Definition des renderers. Die Methode ist nicht korrekt dokumentiert - sie funktioniert nicht korrekt für hierarchical Column, da sie den renderer für table und nicht für tree setzt. Das kann man zeigen, indem man den Test interactive macht:
public void interactiveTreeTableGetStringUsedInSearch() {
JXTreeTableT table = new JXTreeTableT(AncientSwingTeam.createNamedColorTreeTableModel());
table.setTreeCellRenderer(new DefaultTreeRenderer(sv)); // <== renderer für table , BUG!!!
JXFrame frame = wrapWithScrollingInFrame(table, "** interactiveTreeTableGetStringUsedInSearch");
addSearchModeToggle(frame);
addMessage(frame, "Press ctrl-F to open search widget");
show(frame);
}
Kein Wunder, dass "R/G/B: -16711936" nicht gefunden wird. Mit "Green" geht es