【问题标题】:Convert stream BigDecimal summing to JavaFX Property将流 BigDecimal 求和转换为 JavaFX 属性
【发布时间】:2017-06-17 18:04:32
【问题描述】:

我在尝试将 bigdecimal 转换为 ObjectProperty 时遇到问题

public class LinePiece {

    private int idLine;
    private ObjectProperty<BigDecimal> qty = new SimpleObjectProperty<BigDecimal>(BigDecimal.ZERO);
    private ObjectProperty<BigDecimal> price = new SimpleObjectProperty<BigDecimal>(BigDecimal.ZERO);
    private ObjectProperty<BigDecimal> remise = new SimpleObjectProperty<BigDecimal>(BigDecimal.ZERO);
    private IntegerProperty tva = new SimpleIntegerProperty();
    private ObjectProperty<BigDecimal> subTotal = new SimpleObjectProperty<BigDecimal>(BigDecimal.ZERO);
// Getters and Setters
}

我们有一组 LinePiece 类型的项目

private Set<LinePiece> LinePieces = new HashSet<>();
  LinePieces .add(new LinePiece());
  LinePieces .add(new LinePiece());
  LinePieces .add(new LinePiece());

对实际集合进行求和后:

BigDecimal sum = lineCommande.stream().map(LineCommande::getSubTotal)
                .reduce(BigDecimal.ZERO,BigDecimal::add);

我想让 sum 可观察,所以我可以监听 sum 的变化。 我怎样才能做到这一点?

备注:这里不能使用 ObservableList 因为我使用的是休眠

 @OneToMany(mappedBy = "piece", fetch = FetchType.EAGER, orphanRemoval = true, cascade = CascadeType.ALL)
    private Set<LinePiece> LinePieces = new HashSet<>();

如果有其他使用 ObservableList 的解决方案,请告诉我。

【问题讨论】:

  • 我对Hibernate不熟悉,但假设你必须使用Set对象,你不能使用ObservableSet吗?

标签: java javafx data-binding


【解决方案1】:

创建一个ObjectBinding&lt;BigInteger&gt;(实现ObservableValue&lt;BigInteger&gt;):

ObjectBinding<BigInteger> sum = new ObjectBinding<BigInteger>() {
    {
        lineCommande.stream().forEach(l -> bind(l.subTotalProperty()));
    }

    @Override
    protected BigInteger computeValue() {
        return lineCommande.stream().map(LineCommande::getSubTotal)
                .reduce(BigDecimal.ZERO,BigDecimal::add);
    }
};

【讨论】:

  • 我使用的是 BigDecimal 而不是 BigInteger,我尝试将其更改为 BigDecimal,但它似乎不起作用!
猜你喜欢
  • 1970-01-01
  • 2011-05-01
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
  • 2012-09-05
  • 2018-01-31
  • 1970-01-01
  • 2022-09-23
相关资源
最近更新 更多