У меня есть класс с именем TransactionWrapper, который я использую для заполнения моего ObservableList для TableView в моем приложении. У этой обертки есть атрибут (перечисление), указывающий, является ли это отходом или депозитом. Мне нужно сделать это, чтобы отобразить/отформатировать ячейку количества (отобразить ее красным или зеленым цветом в зависимости от характера транзакции), и я не нахожу ничего там, что помогает мне в этой битве.JavaFX TableView: отформатируйте одну ячейку на основе значения другого в строке
В основном, что я хочу сделать, это посмотреть на строку и сказать, является ли тип снятием, покрасить текст красным, и если это цвет депозита зеленый ... Я надеюсь, что кто-то здесь может помочь мне с этим , Я опубликую ниже свою попытку с помощью setCellFactory, как я нашел в других местах. Этот подход позволяет мне форматировать ячейку и ее отображение, но проблема внутри функции updateItem, я могу получить значение моего типа транзакции.
amountCol.setCellFactory(new Callback<TableColumn<TransactionWrapper, String>, TableCell<TransactionWrapper, String>>()
{
@Override
public TableCell<TransactionWrapper, String> call(
TableColumn<TransactionWrapper, String> param)
{
return new TableCell<TransactionWrapper, String>()
{
@Override
protected void updateItem(String item, boolean empty)
{
if (!empty)
{
// should be something like (transaction.getType().equals(TransactionTypes.DEPOSIT) ? true : false;)
boolean isDeposit = true;
setText(item);
if(isDeposit) // should be if type is deposit
{
setTextFill(Color.GREEN);
}
else
{
setTextFill(Color.RED);
}
}
}
};
}
});
А вот как я устанавливаю мою колонку:
amountCol.setCellValueFactory(cellData -> cellData.getValue().getAmountString());
Это работает от объекта под названием TransactionWrapper с ВОЛП:
private final StringProperty transactionTypeString;
private final StringProperty dateString;
private final StringProperty amountString;
private final StringProperty payeeString;
private final StringProperty categoryString;
private final StringProperty notesString;
private Transaction transaction;
Любые идеи по этому вопросу будет будем очень благодарны. : D
Спасибо, Jon
Попробуйте getTableRow(). GetItem(). GetDeposit() '. –