3
我寫了一個默認的表如下方式呈現:刷新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
行。我的問題是,當我點擊一個標題按照它進行排序時,表格被排序但突出顯示的行沒有改變,因此突出顯示了錯誤的行。
如何在排序時重繪表格?
附上/docs/api/javax/swing/event/RowSorterListener.html添加到表中,並在委託方法中調用表的doLayout。 – govi 2012-02-22 10:24:51
@govi - 不,手動doLayout是_never_需要的。如果這似乎解決了一個問題,其他地方有什麼不對勁 – kleopatra 2012-02-22 10:27:51
@kleopatra - 嗯。好吧,這是真的。 – govi 2012-02-22 10:36:59