Я пытаюсь создать float TableColumn, но продолжаю получать ошибки... Можете ли вы помочь? Спасибо
public class DoctorsController implements Initializable
{
@FXML private Button back;
@FXML private Button quit;
@FXML private TableView table;
@FXML private TableColumn<ObservableList,String> name;
@FXML private TableColumn<ObservableList,String> fname;
@FXML private TableColumn<ObservableList,String> address;
@FXML private TableColumn<ObservableList,Float> pop;
@FXML private TableColumn<ObservableList,String> work;
private ObservableList<ObservableList> data;
private Model model;
private DoctorsModel doctorsModel;
@FXML
public void handleButtonAction(ActionEvent event) throws IOException
{
if(event.getSource()==back)
{
Stage stage = (Stage)back.getScene().getWindow();
Parent root = FXMLLoader.load(getClass().getResource("view/MenuView.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
else if(event.getSource()==quit)
{
System.exit(0);
}
}
@Override
public void initialize(URL url, ResourceBundle rb)
{
model = Model.getInstance();
doctorsModel = model.getDoctorsModel();
name.setCellValueFactory((TableColumn.CellDataFeatures<ObservableList, String> cdf)->
new SimpleStringProperty(cdf.getValue().get(0).toString()));
fname.setCellValueFactory((TableColumn.CellDataFeatures<ObservableList, String> cdf)->
new SimpleStringProperty(cdf.getValue().get(1).toString()));
address.setCellValueFactory((TableColumn.CellDataFeatures<ObservableList, String> cdf)->
new SimpleStringProperty(cdf.getValue().get(2).toString()));
pop.setCellValueFactory((TableColumn.CellDataFeatures<ObservableList, Float> cdf)->
new SimpleFloatProperty((float)cdf.getValue().get(3)));
work.setCellValueFactory((TableColumn.CellDataFeatures<ObservableList, String> cdf)->
new SimpleStringProperty(cdf.getValue().get(4).toString()));
data = doctorsModel.result();
for (int i=0; i<data.size();i++)
{
ObservableList row = FXCollections.observableArrayList(data.get(i));
table.getItems().add(row);
}
}
}
В строке, где я определяю pop, мне говорят «несовместимые типы параметров в лямбда-выражении». У меня была эта ошибка раньше, и я решил ее сам, но здесь я не знаю, что делать... Все остальные столбцы - String, но этот, для целей сортировки, мне нужно быть с плавающей запятой или двойным.
FloatProperty
этоProperty<Number>
, а неProperty<Float>
. Вам нужно либо использоватьSimpleObjectProperty<Float>
, либо изменить тип столбца наTableColumn<ObservableList, Number>
. - person fabian   schedule 07.05.2018