如何在javaFx中删除GridPane以前的元素(按钮)并向其中添加其他元素?

如何在javaFx中删除GridPane以前的元素(按钮)并向其中添加其他元素?,javafx,gridpane,Javafx,Gridpane,在javaFx中,我有一个类别GridPane,我在初始化时在其中动态加载按钮。 现在,当我单击任何类别按钮时,例如“类别2”,它将在items GridPane中加载类别2的所有项目(按钮) 然后,当我单击另一个类别时,它不会删除GridPane中项目的旧元素。Items GridPane的旧元素保持原样 那么,如何删除Items GridPane的旧元素并添加新类别的新元素呢 public class GenerateBillController implements Initializa

在javaFx中,我有一个类别GridPane,我在初始化时在其中动态加载按钮。

现在,当我单击任何类别按钮时,例如“类别2”,它将在items GridPane中加载类别2的所有项目(按钮)

然后,当我单击另一个类别时,它不会删除GridPane中项目的旧元素。Items GridPane的旧元素保持原样

那么,如何删除Items GridPane的旧元素并添加新类别的新元素呢

public class GenerateBillController implements Initializable {

    int m1=0,n1=0,m2=0,n2=0,z1=0,z2=0,y1=0,y2=0;

    @FXML
    GridPane gpCategory;

    @FXML
    GridPane gpItems;

    @Override
    public void initialize(URL arg0, ResourceBundle arg1) {
    try {
        cat=lm.getCategory();
        list = FXCollections.observableArrayList();
        for(int i=0;i<cat.length;i++)
        {
            list.add(cat[i]);
        }
        while(z1<16){  //add 16 buttons to Category GridPane
            addCatButton();
            z1++;
        }


    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    }


    private void addCatButton() {
    // TODO Auto-generated method stub

    final Button temp = new Button("Button " + y1);
    final int numButton= y1;
    temp.setId("" + y1);
    temp.setText(cat[z1]);
    temp.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent e) {
        System.out.println("id("+temp.getId()+")="+numButton+"->"+temp.getText());
    try {
        //gpItems.getChildren().removeAll(list);
        items=lm.getItems(temp.getText());
        for(int i=0;i<items.length;i++)
        {
            list2.add(items[i]);
        }
        while(z2<9)
        {
            addItemButton();
            z2++;
        }
    } catch (SQLException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
}

private void addItemButton() {
    // TODO Auto-generated method stub
    final Button temp1=new Button("Button "+y2);
    final int nb=y2;
    temp1.setId(""+y2);
    temp1.setText(items[z2]);
    temp1.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent arg0) {
        // TODO Auto-generated method stub
        System.out.println("id("+temp1.getId()+")= "+nb+"-> " +temp1.getText());
        try {
            String p=lm.getPrice(temp1.getText());
            if(p=="")
            {

            }
            else
            {
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

});
gpItems.add(temp1, m2, n2);

if(m2==2)
{
    m2=-1;
    n2++;
}
m2++;   
y2++;
}
});
gpCategory.add(temp, m1, n1);
if(m1==3)
{
    m1=-1;
    n1++;
}
m1++;   
y1++;
}
公共类GenerateBillController实现可初始化{
int m1=0,n1=0,m2=0,n2=0,z1=0,z2=0,y1=0,y2=0;
@FXML
网格窗格类别;
@FXML
网格窗格项目;
@凌驾
公共void初始化(URL arg0,ResourceBundle arg1){
试一试{
cat=lm.getCategory();
list=FXCollections.observearraylist();

对于(int i=0;我是否希望在添加新元素之前删除网格窗格的所有元素。(顺便说一句,您的代码几乎不可读。您不能使用缩进?)是的,James_D,我希望在添加新元素之前删除网格窗格的所有元素是否希望在添加新元素之前删除网格窗格的所有元素。(顺便说一句,你的代码几乎不可读。你不能使用缩进吗?)