Mam pewien kreator który zawiera tabelę ze stringami. W pewnych okolicznościach string może kończyć się białym znakiem, spacją. Chciałem by była możliwość podejrzenia sobie które to stringi zawierają takową spację. Przygotowałem do tego TableStringColRenderer, który rozszerza klasę DefaultTableCellRenderer. W nim napisałem odpowiedni if, który w razie czego wyszczególnia mi te specyficzne stringi.
private class TableStringColRenderer extends DefaultTableCellRenderer {
private static final long serialVersionUID = 1239512400473884111L;
JLabel lbl;
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
if(drawEndsString.isSelected() && value.toString().trim().length() != value.toString().length()) {
lbl = new JLabel("-->" + value.toString() + "<--");
lbl.setFont(new Font(table.getFont().getFontName(), Font.BOLD, table.getFont().getSize()));
return lbl;
}
else {
lbl = new JLabel(value.toString());
lbl.setFont(new Font(table.getFont().getFontName(), Font.PLAIN, table.getFont().getSize()));
return lbl;
}
}
}
Jeśli JCheckBox "drawEndsString" jest zaznaczony i faktycznie string zawiera białe znaki na swoich krańcach to ten string wypisywany jest pogrubioną czcionką.
Problem o który chciałbym spytać to, że wcześniej, zanim używałem tego renderer'a, poprawnie działało mi wyświetlanie zaznaczenia danego wpisu. Po zaznaczeniu komórki, została ona podświetlona na typowo niebieski kolor. Odkąd używam tego renderer'a, te zaznaczenie nie działa. To znaczy, wpisy się zaznaczają ale nie jest to widoczne, nie widać niebieskiego zaznaczenia.
Czy to może mieć związek z tym, że w metodzie getTableCellRendererComponent jako string, zwracam JLabel? Lecz nie mam wyjścia, muszę zwrócić obiekt pochodny od Component - zwykłego Stringa dać nie mogę.
Co zrobić, żeby mieć zarówno funkcjonalność o której piszę i poprawnie renderowane zaznaczenie wpisu? Czy może nie tędy droga, używając TableStringColRenderer?
Dużo szukałem już na ten temat, ale bez skutku.