我正在编写一个解决背包问题的程序。我有几个类可以解决打包到.jar
中的问题,并且我必须在另一个项目中使用此.jar
。其中一个类名为Item
,它由3个字段定义:String name
,int weight
和double 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"));
您需要帮助吗?
答案 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));
}
});