【发布时间】:2015-02-01 14:03:15
【问题描述】:
我有一个名为 TransactionWrapper 的类,用于为我的应用程序中的 TableView 填充我的 ObservableList。这个包装器有一个属性(枚举),指示它是取款还是存款。我需要去渲染/格式化金额单元格(根据交易的性质将其显示为红色或绿色),但我没有找到任何可以帮助我应对这场战斗的东西。
基本上我想要做的是查看该行并说如果类型是提款,则将文本涂成红色,如果是存款,则将其涂成绿色......我希望这里有人可以帮助我解决这个问题。我将在下面发布我在其他地方发现的 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 的对象,其 fol:
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
谢谢, 乔恩
【问题讨论】:
-
试试
getTableRow().getItem().getDeposit()。
标签: javafx format tableview tablerow tablecell