同一列上的两个不同类型值

时间:2018-11-13 01:46:53

标签: java javafx

enter image description here

我有这张表,其中有一列显示数量。我要显示的是数量和计量单位,例如

60 meters
10 pieces
20 liters
(the first column)

这是我在表中显示的对象:

公共类VentaDetalle {

private IntegerProperty idVentaDetalle;
private IntegerProperty idMercancia;
private StringProperty nombreMercancia;
private IntegerProperty idVentaGeneral;
private DoubleProperty cantidad;
private DoubleProperty general;
private DoubleProperty mayoreo;
private DoubleProperty subtotal;

public VentaDetalle(int idMercancia, String nombreMercancia, int idVentaGeneral,
        Double cantidad, double mayoreo, double general, Double subtotal) {
    this.idMercancia = new SimpleIntegerProperty(idMercancia);
    this.nombreMercancia = new SimpleStringProperty(nombreMercancia);
    this.idVentaGeneral = new SimpleIntegerProperty(idVentaGeneral);
    this.cantidad = new SimpleDoubleProperty(cantidad);
    this.mayoreo = new SimpleDoubleProperty(mayoreo);
    this.general = new SimpleDoubleProperty(general);
    this.subtotal = new SimpleDoubleProperty(subtotal);
}

//Metodos atributo: idVentaDetalle
public int getIdVentaDetalle() {
    return idVentaDetalle.get();
}

public void setIdVentaDetalle(int idVentaDetalle) {
    this.idVentaDetalle = new SimpleIntegerProperty(idVentaDetalle);
}

public IntegerProperty IdVentaDetalleProperty() {
    return idVentaDetalle;
}
//Metodos atributo: idMercancia

public int getIdMercancia() {
    return idMercancia.get();
}

public void setIdMercancia(int idMercancia) {
    this.idMercancia = new SimpleIntegerProperty(idMercancia);
}

public IntegerProperty IdMercanciaProperty() {
    return idMercancia;
}

//Metodos atributo: nombreMercancia
public String getNombreMercancia() {
    return nombreMercancia.get();
}

public void setNombreMercancia(String nombreMercancia) {
    this.nombreMercancia = new SimpleStringProperty(nombreMercancia);
}

public StringProperty NombreMercanciaProperty() {
    return nombreMercancia;
}

//Metodos atributo: idVentaGeneral
public int getIdVentaGeneral() {
    return idVentaGeneral.get();
}

public void setIdVentaGeneral(int idVentaGeneral) {
    this.idVentaGeneral = new SimpleIntegerProperty(idVentaGeneral);
}

public IntegerProperty IdVentaGeneralProperty() {
    return idVentaGeneral;
}
//Metodos atributo: cantidad

public Double getCantidad() {
    return cantidad.get();
}

public void setCantidad(Double cantidad) {
    this.cantidad = new SimpleDoubleProperty(cantidad);
}

public DoubleProperty CantidadProperty() {
    return cantidad;
}

//Metodos atributo: general
public Double getMayoreo() {
    return mayoreo.get();
}

public void setMayoreo(Double mayoreo) {
    this.mayoreo = new SimpleDoubleProperty(mayoreo);
}

public DoubleProperty MayoreoProperty() {
    return mayoreo;
}

//Metodos atributo: general
public Double getGeneral() {
    return general.get();
}

public void setGeneral(Double general) {
    this.general = new SimpleDoubleProperty(general);
}

public DoubleProperty GeneralProperty() {
    return general;
}
//Metodos atributo: subtotal

public Double getSubtotal() {
    return subtotal.get();
}

public void setSubtotal(Double subtotal) {
    this.subtotal = new SimpleDoubleProperty(subtotal);
}

public DoubleProperty SubtotalProperty() {
    return subtotal;

然后我像这样初始化列:

clmnCantidad.setCellValueFactory(new PropertyValueFactory<VentaDetalle, Double>("cantidad"));

我从带有表项的数据库中获取单位 该表具有名称,库存,代码条和度量单位

1 个答案:

答案 0 :(得分:0)

我将不回答有关SQL查询的部分-理想情况下,它应该是结合了两个表的某种JOIN语句。

结合使用IntegerPropertyStringProperty时有2种主要方法。

方法1:建立一个新属性,将它们串联在Model类中

public class VentaDetalle {
    private DoubleProperty cantidad;
    private StringProperty measurementUnit;
    private StringProperty cantidadWithUnit;

    // Other properties

    // Public getters/setters

    public VentaDetalle(......) {
        // All the other stuff you did in constructor

        cantidadWithUnit.bind(Bindings.concat(cantidad, " ", measurementUnit));
    }
}

然后,您只需要设置单元格值工厂即可:

clmnCantidad.setCellValueFactory(new PropertyValueFactory<>("cantidadWithUnit"));

方法2:在单元格值工厂回调内部串联

clmnCantidad.setCellValueFactory(row ->
     Bindings.concat(row.getValue().cantidadProperty(), " ", row.getValue().measurementUnitProperty())
);