加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 当setAutoCreateRowSorter为true时刷新JTable

发布时间:2020-12-15 08:47:50 所属栏目:Java 来源:网络整理
导读:我编写了一个默认表格,如下所示: public class CustTableRenderer extends DefaultTableCellRenderer{ @Override public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int col) { Comp
我编写了一个默认表格,如下所示:

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.我的问题是,当我单击一个标题进行排序时,表格已排序,但突出显示的行未更改,因此突出显示错误的行.

如何在排序时重绘表格?

解决方法

传递到渲染器的坐标在视图坐标系中,您必须在访问模型之前将它们转换为模型坐标:

int modelRow = table.convertRowIndexToModel(row);
  int modelColumn = table.convertColumnIndexToModel(column);
  cellObject = table.getModel().getValueAt(modelRow,modelColumn);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读