- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 JavaFx 项目中,我有一个带有几个 View 的场景。对于窗口的页脚,我有一个从 TableView 扩展的类:
public class FooterView extends TableView<Area> implements ViewTemplate {...}
这将显示一个表格,其中包含 .csv 文件中的一些数据。
当涉及到将特定的presentationmodel属性的值分配给单元格时,我这样做:
TableColumn<Area,Double> powerColumn = new TableColumn<>("Power Overview");
powerColumn.setCellValueFactory(new PropertyValueFactory<>("powerPerArea"));
this.setItems(filePM.getAreas()); //filePm is my filehandler
this.getColumns().addAll(powerColumn, other_columns);
getAreas()
看起来像这样:
public List<Area> readCantonsFromFile() {
try (Stream<String> stream = getStreamOfLines(AREA_FILE_NAME)) {
return stream.skip(1)
.map(l -> new Area(l.split(DELIMITER, 12)))
.collect(Collectors.toList());
}
}
在Area
的构造函数中,我设置了属性。其中一个属性是提到的 powerPerArea
private final DoubleProperty powerPerArea = new SimpleDoubleProperty();
...
public void setPowerPerCanton(double powerPerCanton) {
this.powerPerCanton.set(powerPerCanton);
}
我的问题:有没有办法在显示值之前更改 FooterView 中的值?我尝试过这样的事情:
powerColumn.setCellValueFactory(Math.round(new PropertyValueFactory<>("powerPerArea")));
但我似乎混淆了 DoubleProperty、Double 和 ObservableDouble。我可以修改这里的值吗?
问题:我无法舍入 setter 中的值,因为我通过此函数在循环中添加了 double 值:
public void addPowerPerArea(double power){
double sum = getPowerPerCanton() + power;
setPowerPerCanton(sum);
}
四舍五入这里的值会给我一个错误的结果。 (四舍五入不够精确)。最后我需要在所有金额相加后执行此操作
最佳答案
您应该使用 cellValueFactory
来确定单元格中显示哪些数据:在这种情况下,您的 PropertyValueFactory
返回的数据是从 powerPerAreaProperty().get()
返回的实际 double
值,这正是您想要的。
如果您想控制数据的显示方式,您应该使用cellFactory
。因此,要以特定格式显示数据,包括限制小数位数,您可以这样做:
powerColumn.setCellFactory(tc -> new TableCell<Area, Double>() {
@Override
protected void updateItem(Double power, boolean empty) {
super.updateItem(power, empty);
if (empty) {
setText(null);
} else {
setText(String.format("%.0f", power.doubleValue()));
}
}
});
这里的要点是,您不应该根据您想要的显示方式来修改数据;同时拥有 cellValueFactory
和 cellFactory
的目的是将数据的显示与实际数据本身分开。
关于java - 在 TableView 中使用 PropertyValueFactory 中的值 - JavaFx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50289679/
我有一个对象的 TableView,其中包含映射到其他类型的其他对象的 Id。我需要一个 TableColumn,它不显示 id,而是显示映射到 id 的对象。我想我可以通过创建自己的 Propert
我有两个包,一个用于对象,另一个用于创建 GUI。我正在尝试创建一个 TableView在 JavaFX 中,我必须使用 PropertyValuesFactory<>(property)来获取对象的
总结: 我正在尝试通过按下“重新加载按钮”将数据从 ArrayList 添加/重新加载到 TableView(目前我只是用 TableView 的一列对其进行测试)。因为 TableView 需要一个
我正在尝试使用 TableView 创建一个表,并根据 User 对象列表以编程方式填充它。 User 有三个变量,nameProperty (String), rankProperty (Enum
我正在尝试从 fxml 文件填充示例 javafx TableView。 这是我的 Controller 方法: public class TestController implements Init
我正在尝试使用 TableView 创建一个表并根据 Actors 对象列表填充它。 Actor 模型如下所示。 public class Actor { private SimpleInte
这让我困惑了一段时间,我似乎无法掌握它。我正在使用 Cell Value Factory 填充一个简单的单列表,但它没有填充到表中。 确实如此,我单击了填充的行,但在其中没有看到任何值 - 在本例中为
不要将 propertyvaluefactory 指向对象的属性,如下所示: traineeCol.setCellValueFactory(new PropertyValueFactory("sumN
这件事让我困惑了一段时间,我似乎无法理解它。我正在使用单元格值工厂填充一个简单的单列表,但它不会填充在表中。 确实如此,我单击填充的行,但在其中没有看到任何值 - 在本例中为字符串值。 [我刚刚对此进
这件事让我困惑了一段时间,我似乎无法理解它。我正在使用单元格值工厂填充一个简单的单列表,但它不会填充在表中。 确实如此,我单击填充的行,但在其中没有看到任何值 - 在本例中为字符串值。 [我刚刚对此进
这件事让我困惑了一段时间,我似乎无法理解它。我正在使用单元格值工厂填充一个简单的单列表,但它不会填充在表中。 确实如此,我单击填充的行,但在其中没有看到任何值 - 在本例中为字符串值。 [我刚刚对此进
今天,我在尝试了解有关 JavaFX 和 Java 的更多信息时遇到了另一件我不太了解的事情。 引用以下教程(我试图将原理应用于组织者): JavaFX 8 Tutorial 我将简要概述我有问题的特
在我的 JavaFx 项目中,我有一个带有几个 View 的场景。对于窗口的页脚,我有一个从 TableView 扩展的类: public class FooterView extends Table
来自 eclipse 帮助: setCellValueFactory 需要将单元格值工厂设置为指定如何填充单个 TableColumn 中的所有单元格。单元值工厂是一个提供 CellDataFeatu
我是一名优秀的程序员,十分优秀!