首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在TableCellRenderer上处理整行

在TableCellRenderer上处理整行
EN

Stack Overflow用户
提问于 2011-04-27 19:54:48
回答 2查看 529关注 0票数 1

我正在实现TableCellRenderer,以便在最后一个值是或不确定值的情况下进行可见的更改。

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

代码语言:javascript
复制
    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));
        }
    }

要填充我的表,我有一个从JTable扩展的类,并有这个方法来填充表:

代码语言:javascript
复制
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();
}

toStringReporte方法是这样的:

代码语言:javascript
复制
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()) : "-")};
}

我的问题是(正如类名所示),惟一的更改是单元格边框。我想更改整行边框。

有人知道怎么改变整排的边框吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-27 21:15:58

表行绘制展示了如何呈现行级边框。

票数 2
EN

Stack Overflow用户

发布于 2011-04-27 20:02:39

您不能仅用一个TableCellRenderer来完成这个任务,因为它在每个单元格上独立工作。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5809767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档