Привет, ребята, у меня есть следующая проблема в моей программе. У меня есть несколько tablecellrenderers, которые применяются столбцом. Проблема в том, что столбец дважды отображается в моей таблице, а cellrenderer не работает, и обе колонки неформатируются. Я также не могу изменить имена столбцов, потому что у моего клиента есть определенное представление о том, как должна выглядеть эта таблица.Как обрабатывать дубликаты столбцов в tablecellrenderer?
Я спросил Google, поиск в стеке, но я не могу найти решение для этого.
Знаете ли вы обходной путь для этого?
Заранее спасибо
Линии, где я применяю CellRenderer
for(int i=0;i<(columnnames.length-anz_col);i++){
//Berechnung einmalig durchführen
actcol=i+anz_col;
//CellFormater
tbl_patchstand.getColumn(columnnames[actcol]).setCellRenderer(new PatchstandCellRenderer(tbl_patchstand.getDefaultRenderer(Object.class), actcol, maxfpatches[i]));
tbl_patchstand.getColumn(columnnames[actcol]).setCellRenderer(new PatchstandCellRenderer(tbl_patchstand.getDefaultRenderer(Double.class), actcol, maxfpatches[i]));
tbl_patchstand.getColumn(columnnames[actcol]).setCellRenderer(new PatchstandCellRenderer(tbl_patchstand.getDefaultRenderer(Integer.class), actcol, maxfpatches[i]));
}
Сам CellRenderer:
public class PatchstandCellRenderer extends DefaultTableCellRenderer {
/**
*
*/
private int maxval,col;
private double oldval,newval;
public PatchstandCellRenderer(TableCellRenderer cellRenderer, int col, int maxval) {
super();
this.maxval=maxval;
this.col=col;
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if((column==col) && value!=null && (!((String)value).trim().equals("-")) && (!((String)value).trim().equals(""))){
//Umrechnen Wert auf Range
oldval=Double.parseDouble((String) value);
newval=(oldval)/(maxval);
c.setBackground(GetColor.getColor(newval));
}
else
c.setBackground(Color.WHITE);
return c;
}
}
CellRenderer получает MAXVALUE этого столбца, который рассчитывается до CellRenderer будут применены. Это значение maxvalue используется для получения цветового диапазона от o до max в цветовой гамме java.
Проблема в том, что, если у меня есть повторяющиеся имена столбцов, cellrenderer не связан правильно. скажем, у меня есть два столбца с именем «2014-08-11», средство отображения ячеек не может отличаться от них. –
@lt_katana не использует имена. использования. Модель столбца может получить столбец по его индексу, а не только по имени. См. Мой пример. –
У меня был узел в голове. Индекс Работал для меня спасибо. –