Javafx我想删除Accordion中的动态元素

Javafx我想删除Accordion中的动态元素,javafx,dynamic,removechild,Javafx,Dynamic,Removechild,问题:如何删除右键单击的元素?示例:世界窗格2单击并删除世界窗格2 下面是我单击按钮时动态创建元素的代码。 按钮点击: AnchorPane newPanelContent = new AnchorPane(); VBox h = new VBox(10); h.setPadding(new Insets(10, 0, 0, 10)); newPanelContent.getChildren().add(h); h.getChildren().add(new L

问题:如何删除右键单击的元素?示例:世界窗格2单击并删除世界窗格2

下面是我单击按钮时动态创建元素的代码。 按钮点击:

 AnchorPane newPanelContent = new AnchorPane();
    VBox h = new VBox(10);
    h.setPadding(new Insets(10, 0, 0, 10));
    newPanelContent.getChildren().add(h);
    h.getChildren().add(new Label("Hello World"));
    h.getChildren().add(new Button("Click"));
    TitledPane pane = new TitledPane("World Pane"+i, newPanelContent);
    System.out.println(accordion);
    accordion.getPanes().add(pane);
找到答案。


要在右键单击标题窗格时从手风琴中删除标题窗格,请执行以下操作:

pane.setOnMouseClicked(event -> {
    if (MouseButton.SECONDARY.equals(event.getButton())) {
        accordion.getPanes().remove(pane);
    }
});
其中,
窗格
是对有标题窗格的引用

完整示例应用程序


非常感谢你。你的答复奏效了。他现在工作很健康,系统不允许我给你打分。再次非常感谢。
pane.setOnMouseClicked(event -> {
    if (MouseButton.SECONDARY.equals(event.getButton())) {
        accordion.getPanes().remove(pane);
    }
});
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.input.MouseButton;
import javafx.scene.layout.*;
import javafx.stage.Stage;

import java.util.stream.IntStream;

public class PaneRemoval extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    private Accordion accordion = new Accordion();

    @Override
    public void start(Stage stage) {
        accordion.getPanes().addAll(
                IntStream.range(0, 5)
                        .mapToObj(this::createTitledPane)
                        .toArray(TitledPane[]::new)
        );

        StackPane root = new StackPane(accordion);
        root.setPadding(new Insets(10));
        stage.setScene(new Scene(root));
        stage.show();
    }

    private TitledPane createTitledPane(int i) {
        Pane content = new Pane();
        content.setPrefSize(100, 100);
        content.setStyle("-fx-background-color: cornsilk;");

        TitledPane pane = new TitledPane(i + "", content);

        pane.setOnMouseClicked(event -> {
            if (MouseButton.SECONDARY.equals(event.getButton())) {
                accordion.getPanes().remove(pane);
            }
        });

        return pane;
    }
}