在javafx中从场景中删除对象

时间:2014-03-27 15:21:58

标签: javafx

我正在挖掘文档以查看是否有删除方法,我只是在谷歌时获取此链接 http://www.coderanch.com/t/580998/JavaFX/java/remove-node

有一个简单的删除选项 例如:.getChildren()。remove(object)

它似乎对我不起作用!

1 个答案:

答案 0 :(得分:1)

您提供的代码可以与我合作。

使用 ALT + 添加圆圈单击,只需单击它们即可将其删除。

我使用 ALT 键添加圆圈的原因是因为在下面的代码中,圆圈的场景都会处理鼠标点击。因此,代码必须知道事件的来源。当然,这只是一个例子。

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;

public class ChangeListenerSample extends Application {

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

    @Override
    public void start(final Stage primaryStage) throws Exception {
        final Group root = new Group();
        primaryStage.setResizable(false);
        final Scene scene = new Scene(root, 400,80);
        primaryStage.setScene(scene);

        scene.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {

            @Override public void handle(final MouseEvent event)
            {
                if (!event.isAltDown())
                    return;

                final Circle circle = new Circle(event.getSceneX(), event.getSceneY(),30);
                circle.setFill(Color.YELLOW);
                root.getChildren().add(circle);

                circle.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {

                    @Override public void handle(final MouseEvent arg0)
                    {
                        root.getChildren().remove(circle);
                    }
                });
            }
        });

        primaryStage.show();
    }

}