Poignée sur toute la ligne TableCellRenderer
-
25-10-2019 - |
Question
Je suis en œuvre TableCellRenderer pour faire une diférence visible si la dernière valeur est ou non certaine valeur.
Ainsi, le code de ces implémentations est:
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));
}
}
pour remplir ma table, j'ai une classe qui étend de JTable et cette méthode pour remplir la table:
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 procédé est celui-ci:
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()) : "-")};
}
Mon problème est que (comme nom de classe indique à) le seul changement est cellule frontière. Je veux changer toute la frontière de la ligne.
Certains savoir corps comment changer la frontière de toute la ligne?
Autres conseils
Vous ne pouvez pas faire cela avec juste un TableCellRenderer, comme cela fonctionne indépendamment sur chaque cellule.
Si vous voulez appliquer un effet à une ligne entière, vous aurez probablement besoin de passer outre le méthode de prepareRenderer de JTable.