два разных типа значений в одном столбце - PullRequest
0 голосов
/ 13 ноября 2018

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 голосов
/ 14 ноября 2018

Я не собираюсь отвечать на часть запроса SQL - в идеале это должен быть какой-то оператор JOIN, который объединяет две таблицы.

Существует два основных подхода к объединению IntegerProperty и StringProperty.

.

Подход 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())
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...