Frage

Ich implementiere Tablecellrenderer eine sichtbare Unterschiede zu machen, wenn der letzte Wert ein sicherer Wert ist oder nicht.

Der Code dieser Implementierung lautet also:

    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));
        }
    }

Um meine Tabelle zu bevölkern, habe ich eine Klasse, die sich von JTable erstreckt und diese Methode hat, um die Tabelle zu bevölkern:

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();
}

Die Methode der ToStringRePorte ist diese:

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()) : "-")};
}

Mein Problem ist, dass (wie der Unterrichtsname sagt) die einzige Änderung ist Zelle Grenze. Ich möchte den gesamten Rand der gesamten Reihe ändern.

Ein Körper weiß, wie man den Rand der gesamten Reihe verändert?

War es hilfreich?

Lösung

Tabellenzeile -Rendering Zeigt, wie Sie einen Rand der Zeile aufnehmen können.

Andere Tipps

Sie können dies nicht nur mit einem TableCellRenderer tun, da es in jeder Zelle unabhängig funktioniert.

Wenn Sie einen Effekt auf eine ganze Zeile anwenden möchten, müssen Sie wahrscheinlich die überschreiben Preparerenderer Methode von JTable.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top