Как установить значение для конкретного индекса ячейки таблицы в табличном представлении JavaFx? - PullRequest
0 голосов
/ 08 октября 2019

Я пытался установить значение в определенном индексе столбца (ячейке), как это сделать в javafx, я пробовал много способов сделать это, но каждый раз, когда мой пробный сбой

//First try
productName.setCellValueFactory(new PropertyValueFactory(product.getCode()));

//Second try
name.setCellValueFactory(c-> new SimpleStringProperty(c.getValue().getTestBedName()));

//Thrid try
productCode.setCellValueFactory(new Callback<CellDataFeatures<Product, String>, 
ObservableValue<String>>()
{
    @Override public ObservableValue<String> call(CellDataFeatures<Product,                                 
    {
        return new SimpleStringProperty(c.getValue().getCode());
    }
});

1 Ответ

0 голосов
/ 13 октября 2019

Мы опубликуем наш TableView, который заполняется из базы данных Derby.
Мы используем шаблон контроллера представления модели. Таким образом, мы могли бы обновить один столбец в выбранной строке ИЛИ мы могли бы передать статическую переменную из другого контроллера, который просто вставляет значение в столбец, только проблема здесь - вам нужно знать идентификатор строки

    TableData.add(new CBModel(rs.getString("ID"),rs.getString("sortDate")
    ,rs.getString("txMonth"),rs.getString("txYear"),rs.getString("txType"),rs.getString("txAmount")
    ,rs.getString("ckNum"),rs.getString("txDesc"),rs.getString("txBalance")));

    }
    PropertyValueFactory<CBModel, String> IDCellValueFactory = new PropertyValueFactory<>("ID");
    colID.setCellValueFactory(IDCellValueFactory);
    PropertyValueFactory<CBModel, String> DateCellValueFactory = new PropertyValueFactory<>("sortDate");
    colTxDate.setCellValueFactory(DateCellValueFactory);
    PropertyValueFactory<CBModel, String> TypeCellValueFactory = new PropertyValueFactory<>("txType");
    colTxType.setCellValueFactory(TypeCellValueFactory);
    PropertyValueFactory<CBModel, String> AmountCellValueFactory = new PropertyValueFactory<>("txAmount");
    colTxAmount.setCellValueFactory(AmountCellValueFactory);
    PropertyValueFactory<CBModel, String> CKNumCellValueFactory = new PropertyValueFactory<>("ckNum");
    colCKNum.setCellValueFactory(CKNumCellValueFactory);
    PropertyValueFactory<CBModel, String> DescCellValueFactory = new PropertyValueFactory<>("txDesc");
    colTxDesc.setCellValueFactory(DescCellValueFactory);
    PropertyValueFactory<CBModel, String> BalanceCellValueFactory = new PropertyValueFactory<>("txBalance");
    colTxBalance.setCellValueFactory(BalanceCellValueFactory);
    // ================================================================
    // colTxDate are the ID's for the tableview columns
    // sortDate  are the Column Names for the Database TABLE CDBalance
    // ================================================================
    colTxDate.setStyle("-fx-alignment: CENTER;");
    colCKNum.setStyle("-fx-alignment:CENTER;");
    colTxType.setStyle("-fx-alignment:CENTER;");
    colTxAmount.setStyle("-fx-alignment: CENTER-RIGHT;");
    colTxBalance.setStyle("-fx-alignment: CENTER-RIGHT;");
    //Collections.sort(TableData, (p1, p2)-> p2.getSortDate().compareToIgnoreCase(p1.getSortDate()));
    Collections.sort(TableData, (p2, p1)-> p1.getID().compareToIgnoreCase(p2.getID()));
    // Line of Code above Sorts Database Columns based on VARIABLE in CBModel
    // Change p2,p1 to sort Ascending or Descending
    if(TableData.size() < 15) {// Format TableView to display Vertical ScrollBar
        table.setPrefWidth(926);
    }else {
        table.setPrefWidth(945);
    }   table.setItems(TableData);
    stmnt.close();  
}
...