У меня есть код сгенерированный gridpane.Я генерирую столбцы и строки на основе данных, которые он получает с сервера.Я добавляю VBox, который содержит Label (вверху) и ImageView (внизу) к каждой ячейке.Каждый VBox отличается.Я смотрю на каждый VBox как контейнер.Я хотел бы сделать каждый VBox доступным для выбора в режиме радиокнопок - можно выбрать только один в области сетки.Это мой код для генерации gridpane и генерации VBox и добавления их к ячейкам gridpane:
private void vBoxPickPane(List<Data> data){
int columns = 3;
int vBoxSpacing = 2;
int cellWidth = 260;
int cellHeight = 220;
List<Label> labels = new ArrayList<Label>();
List<ImageView> imageViews = new ArrayList<>();
List<VBox> vBoxes = new ArrayList<>();
for(int l=0; l != data.size(); l++){
labels.add(new Label(data.get(l).getName()));
imageViews.add(new ImageView(new Image(new File(data.get(l).getImgFileUrl()).toURI().toString())));
}
int labelIndex = 0;
for(int u=0;u!=columns;u++){
gridPane.getColumnConstraints().add(new ColumnConstraints(cellWidth));
}
for(int i=0; i <= data.size()/columns; i++){
gridPane.getRowConstraints().add(new RowConstraints(cellHeight));
}
for(int i=0; i<data.size();i++){
vBoxes.add(new VBox(vBoxSpacing));
GridPane.setConstraints(vBoxes.get(i), i%columns, i/columns);
}
for(int o=0; o != imageViews.size(); o++){
imageViews.get(o).setFitHeight(200);
imageViews.get(o).setFitWidth(255);
}
for(int k = 0; k != labels.size(); k++){
labels.get(k).setStyle("-fx-background-color:white;");
}
for(int u = 0; u != vBoxes.size(); u++){
vBoxes.get(u).getChildren().addAll(labels.get(u), imageViews.get(u));
}
gridPane.getChildren().addAll(vBoxes);
}
Код требует очистки, которую я сделаю после того, как выясню, как сделать каждую ячейку кликабельной в radiobuttonповедение.
Я думал, что, возможно, мне следует создать переменную VBox для выбранной, а затем проверить, имеет ли она уже значение, и если она действительно имеет значение, а другой VBox щелкают, то он изменится на тот, который нажал,Но я также должен сообщить пользователю, что он выбрал один vbox и изменить его цвет фона или что-то подобное.Также я не знаю, как бы я создал каждую ячейку как кликабельную.