Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在TableCellRenderer上处理整行_Java_Swing_Tablecellrenderer - Fatal编程技术网

Java 在TableCellRenderer上处理整行

Java 在TableCellRenderer上处理整行,java,swing,tablecellrenderer,Java,Swing,Tablecellrenderer,我正在实现TableCellRenderer,以便在最后一个值是否为确定值时产生可见的差异 因此,这些实施的代码是: TableColumnModel tcm = table.getColumnModel(); TableColumn col = tcm.getColumn(column); JLabel cellComponent = new JLabel(); if (value != null) { cellComponent.se

我正在实现TableCellRenderer,以便在最后一个值是否为确定值时产生可见的差异

因此,这些实施的代码是:

    TableColumnModel tcm = table.getColumnModel();
    TableColumn col = tcm.getColumn(column);

    JLabel cellComponent = new JLabel();
    if (value != null)
    {
        cellComponent.setText( String.valueOf( value ) );
    }else
        cellComponent.setText( "-" );

    String colName = (String) col.getHeaderValue(); 
    if (colName.startsWith("Vigencia") && !cellComponent.getText().equals("-"))
    {
        long dias = Long.valueOf(cellComponent.getText());
        if (dias <0)
        {
            dias = dias -(dias*2); //Le resto (dias x 2) para sacarle el negativo...

            cellComponent.setText( String.valueOf(dias) );
            cellComponent.setBorder( BorderFactory.createLineBorder(Color.RED));
        }
    }
我的问题是(如类名所示)唯一的变化是单元格边框。我想更改整个行边框


有些人知道如何更改整行的边框?

仅使用TableCellRenderer无法做到这一点,因为它在每个单元格上独立工作


如果要对整行应用效果,可能需要重写JTable方法。

显示如何渲染行级边框。

JTable by defalut从单元格返回JLabel,如果未将任何JComponents放入TbaleCell或TbaleColumn中,然后,您必须寻找prepareRendereran的实现:将数据存储在模型中,而不是它的字符串表示形式。将模型数据类型转换为字符串是渲染器的任务
public void setData(LinkedList<T> list)
{
    if (list.size() == 0)
    {
        cleanTableData();
        return;
    }

    int index = 0;
    Object[][] o = new Object[list.size()][_columnNames.length];
    for (T obj : list)
    {
        Object[] data = obj.toStringReporte();
        o[index++] = data;
    }
    _tableModel = new DefaultTableModel( o, _columnNames );
    setModel(_tableModel);
    setColumnWidths();
}
public Object[] toStringReporte()
{
    String planName = "-";
    if (getPlanID() != null)
    {
        Plan plan = Adapter.getInstance().getElement(getPlanID(), new Plan());
        planName = plan.getNombre();
    }

    return new Object[]{getID(), 
                        getNombre(), 
                        getApellido(), 
                        getDni(), 
                        (getEstado().equals("A") ? "Activo" : "Inactivo"), 
                        (getSexo().equals("M") ? "Masculino" : "Femenino"),
                        (getFichaMedica() != null ? new SimpleDateFormat(Defines.DATE_FORMAT).format(new Date(getFichaMedica())) : "-"),
                        planName,
                        (getFechaVencimiento() != null ? SGGDateUtils.diferenceInDaysBetweenTwoDatesMS(getFechaVencimiento(), new Date().getTime()) : "-")};
}