如何删除GridPane(JavaFX)中单元格的多个内容?

时间:2018-11-29 17:30:02

标签: java javafx javafx-8 gridpane

我试图通过单击按钮来删除网格窗格的单元格内容(即标签)。到目前为止,这是我所做的:

@FXML
private GridPane myGridPane;

public void clearButtonClicked() {
    ObservableList<Node> childrens = myGridPane.getChildren();
    for (Node node : childrens) {
        if (node instanceof Label) {
            Node nodeToDelete = node;
            myGridPane.getChildren().remove(nodeToDelete);
        }
    }
}

public void addButtonClicked() {
    for (int x = 0; x <= 1; x++) {
        for (int y = 1; y <= 2; y++) {
            myGridPane.add(new Label(x + "," + y), x, y);
        }
    }
}

@Override
public void initialize(URL url, ResourceBundle rb) {
    Button clear = new Button("Clear");
    Button add = new Button("Add");
    add.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {
            addButtonClicked();
        }
    });
    clear.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {
            clearButtonClicked();
        }
    });
    addButtonClicked();
    myGridPane.add(add, 0, 0);
    myGridPane.add(clear, 1, 0);
}    

按添加按钮将完成我期望的操作,即用以其坐标为值的标签填充单元格。但是每当我按下清除按钮时,即使我没有中断,它似乎也只能清除它会找到的第一个标签(0,1)。我期望它会遍历网格窗格的所有内容,直到它为空或到达末尾为止。我怎样才能做到这一点?如果我按下清除按钮,它将清除网格窗格中的所有标签?或者更具体地说,清除网格窗格中特定坐标范围内的所有标签(我想在另一个项目中这样做)? (例如,在第1列至第2列,第1列至第2行以及每行的开始单元格和结束单元格内(例如1,1到1,3))。希望您能提供帮助。谢谢!

0 个答案:

没有答案