Я написал таблицу по умолчанию делают следующим образом:Обновить JTable когда setAutoCreateRowSorter верно
public class CustTableRenderer extends DefaultTableCellRenderer{
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
Component comp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
try {
Object cellObj = table.getModel().getValueAt(row, 7);
double cellValue = (Double) cellObj;
if (cellValue < 0) {
comp.setBackground(new Color(255, 48, 48));
} else if (cellValue == 0) {
comp.setBackground(new Color(173, 255, 47));
} else {
comp.setBackground(Color.white);
}
if (isSelected) {
comp.setBackground(new Color(71, 60, 139));
TableModel model = table.getModel();
}
} catch (Exception e) {
e.printStackTrace();
}
return comp;
}
}
Чтобы выделить строки, которые содержат значения со знаком минус в колонке 7, я также набор setAutoCreateRowSorter
к true
. Моя проблема заключается в том, что когда я нажимаю заголовок для сортировки в соответствии с ним, таблица сортируется, но выделенная строка не изменяется, поэтому подсвечивается неправильная строка.
Как перерисовать таблицу при ее сортировке?
Приложить http://docs.oracle.com/javase/6 /docs/api/javax/swing/event/RowSorterListener.html в таблицу, а в методе делегата вызовите doLayout таблицы. – govi
@govi - Нет, инструкция doLayout не нужна. Если это, кажется, решает проблему, есть что-то действительно неправильное в другом месте – kleopatra
@ kleopatra - хм. да, это правда. – govi