我需要在按下按鈕後在vbox中獲取imageview的文件名?這裏的文件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()));
}
});**
}
});
}
你的代碼片段不遵循JavaFX的模式。閱讀[教程](http://docs.oracle.com/javafx/2/get_started/fxml_tutorial.htm),瞭解如何在JavaFX中使用FXML進行編碼!正如@James_D所指出的,你有一個控制器,並且在其構造函數中使用'Platform.runLater()'是非常令人困惑的。要了解有關FXML和控制器的更多信息,請閱讀[掌握FXML]的示例(http://docs.oracle.com/javafx/2/fxml_get_started/jfxpub-fxml_get_started.htm) – ItachiUchiha 2014-09-11 06:15:08