javafx pane.getChildren()。remove(Node nd)不起作用

问题描述 投票:0回答:1

我的窗格上有一些元素。我的程序有时会添加Elements,也应该删除它们。但是,当我尝试删除元素时,它们只是停留在那里。我已经尝试记录这种情况,并且在我调用此方法时程序始终返回true。

public void removeAddedElements() {
    for (Node addedElement : addedElements) {
        if (parent.getChildren().contains(addedElement)) {
            parent.getChildren().remove(addedElement); //this returns true
        }
    }
java user-interface javafx-8
1个回答
0
投票

我已经写了一个代码公共类MousePosition扩展了Application {

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

    @Override
    public void start(Stage primaryStage) {
        Pane pane = new Pane();
        Text text = new Text();

        Scene scene = new Scene(pane, 300, 100);
        primaryStage.setScene(scene);
        primaryStage.setTitle("Exercise 8");
        primaryStage.show();

        scene.setOnMouseReleased(e -> pane.getChildren().clear());

        scene.setOnMouseClicked(e -> {
            showCoordinates(pane, text, e);
        });

        scene.setOnMousePressed(e -> {
            showCoordinates(pane, text, e);
        });


    }

    private void showCoordinates(Pane pane, Text text, MouseEvent e) {
        text.setText("(" + e.getX() + ", " + e.getY() + ")");
        text.setX(e.getX());
        text.setY(e.getY());
        if (!pane.getChildren().contains(text))
            pane.getChildren().add(text);
    }
}

应该:

单击鼠标按钮时显示鼠标位置(请参阅图15.28a),另一个显示鼠标位置时按下鼠标按钮,并在鼠标按钮停止显示已发布。

但是我的lambda无效:

scene.setOnMouseReleased(e -> pane.getChildren().clear());

它只是什么都不做。当我将其更改为scene.setOnMouseReleased(e -> text.setText(""));时,它也不执行任何操作。但是当我使用scene.setOnMouseReleased(e -> System.out.println("0"));时,它可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.