如何使用JavaFX设置表中语言环境的小数分隔符
我正在写一个解决背包问题的程序。我有几个解决这个问题的类打包到一个.jar中,我必须在另一个项目中使用这个.jar。其中一个类名为Item,由3个字段定义:String name、int-weight和double-value,另一个类返回所有这些项的列表。我要做的是在表中显示带有分隔符的值,分隔符的设置取决于Locale.getDefault。一旦它是一个。有一次,。我尝试的是tableColumnItemsValue.setCellValueFactorypvt;其中,pvt是设置小数分隔符的东西。然后我试着:如何使用JavaFX设置表中语言环境的小数分隔符,java,javafx,Java,Javafx,我正在写一个解决背包问题的程序。我有几个解决这个问题的类打包到一个.jar中,我必须在另一个项目中使用这个.jar。其中一个类名为Item,由3个字段定义:String name、int-weight和double-value,另一个类返回所有这些项的列表。我要做的是在表中显示带有分隔符的值,分隔符的设置取决于Locale.getDefault。一旦它是一个。有一次,。我尝试的是tableColumnItemsValue.setCellValueFactorypvt;其中,pvt是设置小数分隔符
PropertyValueFactory pvt = new PropertyValueFactory("value").call(new DecimalFormatSymbols(Locale.getDefault()).getDecimalSeparator());
当然,它不起作用,因为我正在将字符返回到PropertyValueFactory。我不知道怎么做
这是我开始工作之前的代码:
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"));
你能帮忙吗?好的,我的问题解决了。如果有人有类似的问题,这里有一个解决方案:
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));
}
});
您需要自定义cellfactory而不是cellValueFactory!这将文本配置为一个数字格式,这是错误的,不是我在评论中建议的;cellValueFactory用于在您的上下文中提供可观察的数据值作为DoubleProperty,cellFactory用于通过格式化该值来配置该值的可视表示形式f.i。