Dr$arez
Grünschnabel
Ich hoffe es gibt einen Kenner auf diesem Gebiet, denn ganz einfach scheint es mir nicht:
Problem: Ich verwende eine JTable mit funktionierendem RowFilter (regexFilter) der wie gewohnt auf dem TableRowSorter aufsitzt sowie ein eigenen TableCellRenderer der von DefaultTableCellRenderer erbt.
So - und da liegt der Knackpunkt: mein cellrenderer überschreibt die methode setValue(Object arg0) und prüft, ob es sich beid dem als argument übergebenem objekt um ein JLabel handelt (test mit instanceof). is dies so, so wird (und da muss man wissen, dass der DefaultTableCellRenderer jede Zelle sowieso als JLabel darstellt) wird die Zelle mit dem Icon und dem Text des einkommenden JLabels gefüttert und alle anderen objekte werden an super.setValue(arg0); weitergereicht ->
Wunderbar: in meiner Zelle werden jetzt auch Icons statt nur txt dargestellt.... ABER:
Furchtbar: Mein RowFilter filtert nun auch nach den Namen der Icons in den Zellen und nicht nur den Text (des von DefaultTableCellRenderer's zurückgegebenem JLabel).
Wie kann ich meinem RowSorter/RowFilter nun sagen, dass er lediglich den für's Auge zu sehenden Text behandeln soll, bzw. dass von dem Zelleninhalt nur der Text an den sorter/filter weitergeleitet wird?
need a prof/need help :bahnhof:
Source von renderer:
source-snippets von sorter/filter ( nicht zusammenhängend nur sinnbeschreibend):
Problem: Ich verwende eine JTable mit funktionierendem RowFilter (regexFilter) der wie gewohnt auf dem TableRowSorter aufsitzt sowie ein eigenen TableCellRenderer der von DefaultTableCellRenderer erbt.
So - und da liegt der Knackpunkt: mein cellrenderer überschreibt die methode setValue(Object arg0) und prüft, ob es sich beid dem als argument übergebenem objekt um ein JLabel handelt (test mit instanceof). is dies so, so wird (und da muss man wissen, dass der DefaultTableCellRenderer jede Zelle sowieso als JLabel darstellt) wird die Zelle mit dem Icon und dem Text des einkommenden JLabels gefüttert und alle anderen objekte werden an super.setValue(arg0); weitergereicht ->
Wunderbar: in meiner Zelle werden jetzt auch Icons statt nur txt dargestellt.... ABER:
Furchtbar: Mein RowFilter filtert nun auch nach den Namen der Icons in den Zellen und nicht nur den Text (des von DefaultTableCellRenderer's zurückgegebenem JLabel).
Wie kann ich meinem RowSorter/RowFilter nun sagen, dass er lediglich den für's Auge zu sehenden Text behandeln soll, bzw. dass von dem Zelleninhalt nur der Text an den sorter/filter weitergeleitet wird?
need a prof/need help :bahnhof:
Source von renderer:
Code:
class VCListCellRenderer extends DefaultTableCellRenderer{
@Override
protected void setValue(Object arg0) {
if(arg0 instanceof JLabel){
setIcon(((JLabel) arg0).getIcon());
setText(((JLabel) arg0).getText());
System.out.println(((JLabel) arg0).getIcon().getIconHeight());
}
else{
super.setValue(arg0);
setIcon(null);
}
}
}
Code:
setRowSorter(getSorter());
// und als actionevent zeilen später:
sorter.setRowFilter(RowFilter.regexFilter("(?i)\\b" + regExString, 0));