【发布时间】:2015-11-12 07:27:44
【问题描述】:
我有一个TableView(位于ScrollPane 内),其中一行如下:
tc_proj_amount.setCellValueFactory(cellData ->
new SimpleStringProperty(cellData.getValue().getBalance().toPlainString()));
我想为tc_proj_amount 为负数的整行着色。为此,我使用这个:
tc_proj_amount.setCellFactory(column -> new TableCell<Transaction, String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (item == null || empty) {
setText(null);
} else {
setText(item);
// Style row where balance < 0 with a different color.
BigDecimal balance = new BigDecimal(item);
if (balance.compareTo(BigDecimal.valueOf(0)) < 0) {
TableRow currentRow = getTableRow();
currentRow.setStyle("-fx-background-color: tomato;");
}
}
}
});
当我运行我的应用程序时,行会根据需要着色,但是当我向上滚动列表时,越来越多的行会着色,即使 tc_proj_amount 不是负数也是如此。当我尝试对列进行排序时,所有行都会变成彩色。我该如何解决这个问题?
第二个问题。我想以某种方式格式化tc_proj_amount 的值。为此,我这样做了:
DecimalFormat df = new DecimalFormat("#,###.00");
tc_proj_amount.setCellValueFactory(cellData ->
new SimpleStringProperty(df.format(cellData.getValue().getBalance()).toString()));
改变行颜色的部分同上。在这种情况下,我收到一个异常。我该如何解决?
Exception in thread "JavaFX Application Thread" java.lang.NumberFormatException
异常指向行着色的部分。
【问题讨论】:
-
对于第一部分,看起来您没有阅读other question Btw 接受答案的更新,最好不要将单独的问题混为一谈(格式与颜色无关)。 .