想实现判断表格中的数据功能,如果大于5%就用红色背景色,如果小于5%就用绿色背景色。怎么写?

解决方案 »

  1.   

    重载的TableModel里的getValueAt(int row,int col)方法:  public Object getValueAt(int row, int col) {
             if(col == 3){
             if((Integer)data[row][col] >= 10)
             return   "<html><font   color=red>"+data[row][col]+"</font></html>"; 
             else return "<html><font color=green>"+data[row][col]+"</font></html>";
             }else {
             return data[row][col];
             }
            }
      

  2.   

    重写CellRender,请参考如下代码:
    jTable0.getColumnModel().getColumn(0).setCellRenderer(
    new DefaultTableCellRenderer() {
    private static final long serialVersionUID = 1L; @Override
    public Component getTableCellRendererComponent(
    JTable table, Object value, boolean isSelected,
    boolean hasFocus, int row, int column) {
    // TODO Auto-generated method stub
    int result = (Integer) value;
    if (result > 8) {
    this.setBackground(Color.red);
    } else {
    this.setBackground(Color.white);
    }
    return super.getTableCellRendererComponent(table,
    value, isSelected, hasFocus, row, column);
    }
    });
      

  3.   

    1楼的答非所问啊。
    2楼的,怎么把这段代码用在JTable上
    我的代码是              DefaultTableModel dtm=new DefaultTableModel(data,title);
                jTable2.setModel(dtm);
    其中data是二维数组,title是字符串数组。
      

  4.   

    初始化Jtable的时候:table = new JTable() { @Override
    public Component prepareRenderer(TableCellRenderer renderer,
    int row, int column) {
    Component component = super.prepareRenderer(renderer, row,
    column); String data= getValueAt(row, 8).toString().trim();
    if (data大于5%) {
    component.setBackground(Color.red);
    } else if (data小于5%){
    component.setBackground(Color.green);
    }else{
    component.setBackground(Color.white);
    component.setForeground(Color.BLACK);
    } Object value = getValueAt(row, column);
    boolean isSelected = false;
    boolean hasFocus = false; // Only indicate the selection and focused cell if not printing
    if (!isPaintingForPrint()) {
    isSelected = isCellSelected(row, column); boolean rowIsLead = (selectionModel.getLeadSelectionIndex() == row);
    boolean colIsLead = (columnModel.getSelectionModel()
    .getLeadSelectionIndex() == column); hasFocus = (rowIsLead && colIsLead) && isFocusOwner();
    } return renderer.getTableCellRendererComponent(this, value,
    isSelected, hasFocus, row, column);
    } };
      

  5.   

    定制一个TableCellRenderer renderer类似于二楼的
    JTable table;
    table.setDefaultCellRenderer(Object.class,renderer);
    这样就设置了Table的渲染器,只要对象类型是Object,就会用renderer进行渲染。TableCellRenderer用法可以参考
    http://blog.csdn.net/chosen0ne/archive/2009/08/16/4453267.aspx