如何使用JavaFX

时间:2019-03-07 01:50:49

标签: java javafx

我正在编写一个解决背包问题的程序。我有几个类可以解决打包到.jar中的问题,并且我必须在另一个项目中使用此.jar。其中一个类名为Item,它由3个字段定义:String nameint weightdouble value,而另一个类返回所有这些项的列表。我要做的是显示Table值,并根据Locale.getDefault()设置分隔符。一次是.,一次是,。我尝试过的是tableColumnItemsValue.setCellValueFactory(pvt);,其中pvt将设置小数点分隔符。然后我尝试了:

PropertyValueFactory pvt = new PropertyValueFactory("value").call(new DecimalFormatSymbols(Locale.getDefault()).getDecimalSeparator());

当然,它不起作用,因为我将char返回到PropertyValueFactoy。我不知道该怎么做。

这是我开始“使其工作”之前的代码:

    listProperty = new SimpleListProperty<>();
    observableListOfItems = FXCollections.observableArrayList(listOfItems);
    listProperty.set(observableListOfItems);
    tableView.setItems(observableListOfItems);
    tableView.itemsProperty().bindBidirectional(listProperty);

    tableColumnItemsName.setCellValueFactory(new PropertyValueFactory<>("name"));
    tableColumnItemsWeight.setCellValueFactory(new PropertyValueFactory<>("weight"));
    tableColumnItemsValue.setCellValueFactory(new PropertyValueFactory<>("value"));

您需要帮助吗?

1 个答案:

答案 0 :(得分:-1)

好的,我已经解决了我的问题。如果有人遇到类似问题,请采用以下解决方案:

tableColumnItemsValue.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Item, String>, ObservableValue<String>>() {
    @Override
    public ObservableValue<String> call(TableColumn.CellDataFeatures<Item, String> param) {
        double value = param.getValue().getItemValue();
        DecimalFormat df = new DecimalFormat("#.#", new DecimalFormatSymbols(Locale.getDefault()));
        return new SimpleStringProperty(df.format(value));
    }
});