У меня есть таблица в программе, и я создаю таблицу цветов Zebra, используя класс:
private class ColorTableCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
final Component cellComponent = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
table.setIntercellSpacing(new Dimension(0,0));
if(!isSelected) {
if (row%2 == 0) {
cellComponent.setBackground(new Color(255,255,254));
} else {
cellComponent.setBackground(new Color(170,170,170));
}
}
return cellComponent;
}
}
при вызове этого класса с:
mytable.setDefaultRenderer(Object.class, new ColorTableCellRenderer());
нужны очень большие ресурсы процессора (около 50%).
А при использовании DefaultTableCellRenderer вызывайте с:
mytable.setDefaultRenderer(Object.class, new DefaultTableCellRenderer());
Нужны только 1% ресурсов процессора.
Я пытаюсь использовать это:
private class ColorTableCellRenderer extends DefaultTableCellRenderer {
JTable table = new JTable()
{
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
{
Component c = super.prepareRenderer(renderer, row, column);
table.setIntercellSpacing(new Dimension(0,0));
System.out.println("Coba ");
// Alternate row color
if(row%2 == 0) {
c.setBackground(Color.YELLOW);
}
else {
c.setBackground(Color.GREEN);
}
return c;
}
};
}
Ничего не произошло (не удалось).
Может быть, кто-то может исправить класс ColorTableCellRenderer выше, чтобы уменьшить использование ресурсов процессора. Спасибо.