버튼을 누르면 vbox 내에서 이미지 뷰의 파일 이름을 가져와야합니까 ?? 여기에 파일 arraylist가 vbox에 추가되었으며, vbox는 gridpane에 추가되었습니다. vbox.getChildren()을 사용하면 가능합니까 ?? 또는 다른 방법을 진행해야합니다.vbox에서 자식 이름을 가져 오는 방법
private ArrayList<Button> btnar;
private VBox vb;
private Button downloadbtn;
@FXML
private ScrollPane displayscroll;
private GridPane gridpane;
public HomeUI_2Controller() {
Platform.runLater(new Runnable() {
@Override
public void run() {
gridpane = new GridPane();
displayscroll.setContent(gridpane);
btnar = new ArrayList<>();
for (int i = 0; i < filelist2.size(); i++) {
downloadbtn = new Button("Download");
btnar.add(downloadbtn);
}
int imageCol = 0;
int imageRow = 0;
for (int i = 0; i < filelist2.size(); i++) {
System.out.println(filelist2.get(i).getName());
image = new Image(filelist2.get(i).toURI().toString());
pic = new ImageView();
pic.setFitWidth(130);
pic.setFitHeight(130);
pic.setImage(image);
vb = new VBox();
vb.getChildren().addAll(pic, (Button) btnar.get(i));
gridpane.add(vb, imageCol, imageRow);
GridPane.setMargin(pic, new Insets(2, 2, 2, 2));
imageCol++;
// To check if all the 3 images of a row are completed
if (imageCol > 2) {
// Reset Column
imageCol = 0;
// Next Row
imageRow++;
}
}
**downloadbtn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
System.out.println("sssss");
System.out.println(vb.getChildren().contains(pic.getId()));
}
});**
}
});
}
당신의 코드 조각은 자바 FX 패턴을 따르지 않는 : 첫 번째
for
루프 내에서 각 버튼에 이벤트 핸들러를 추가 할 수 있습니다 그렇게하기 위해. JavaFX에서 FXML을 사용하여 코드를 작성하는 방법에 대한 [튜토리얼] (http://docs.oracle.com/javafx/2/get_started/fxml_tutorial.htm)을 읽어보십시오! @ James_D가 이미 지적했듯이, 컨트롤러를 가지고 있고 생성자 내에'Platform.runLater()'를 사용하는 것은 정말로 혼란 스럽습니다. FXML 및 컨트롤러에 대한 자세한 내용은 [Mastering FXML] (http://docs.oracle.com/javafx/2/fxml_get_started/jfxpub-fxml_get_started.htm)의 예제를 참조하십시오. – ItachiUchiha