MouseEvent-将圆添加到场景

惠灵顿

该程序涉及EventHandlers和MouseEvents的应用。该程序的目标是呈现一个空白场景,用户可以单击该场景(主要),并在事件发生时将圆形对象添加到鼠标所在的场景。可以添加的圈子数量无关紧要。当用户在鼠标悬停在目标节点(圆形对象)上时右键单击(辅助)鼠标时,该对象将从场景中移除。到目前为止,我编写的程序将显示一个圆圈,但仅在场景的原点而不是鼠标所在的位置。另外,我只能向场景中添加一个圆圈,而不能添加其他圆圈,如果再次单击主圆圈,则无法单击辅助圆圈并删除原点处的圆圈。

   static Circle circle;    

@Override
public void start(Stage primaryStage) {
    StackPane root = new StackPane();
    Scene scene = new Scene(root, 350, 300);
    primaryStage.setTitle("Dots");
    primaryStage.setScene(scene);

    root.addEventHandler(MouseEvent.MOUSE_CLICKED, (MouseEvent me) -> {
        if(me.getButton().equals(MouseButton.PRIMARY)) {
            root.getChildren().add(new Circle(me.getScreenX(), me.getScreenY(), 10, Color.BLUE));
        }
    });

    root.addEventHandler(MouseEvent.MOUSE_ENTERED_TARGET, (MouseEvent me) -> {
        if(me.getButton().equals(MouseButton.SECONDARY)) {
            root.getChildren().remove(me.getTarget());
        }
    });

    primaryStage.show();
}

我不认为使用两个事件处理程序是实现此目的的最佳方法。最初,我在第一个处理程序的if else语句中拥有第二个事件处理程序主体(root.getChildren)。我更改它的原因是因为我不确定如何实现MouseEvent.MOUSE_ENTERED_TARGET来指定要从场景中删除哪个圆形对象。

宇智波

我建议您使用aGroup代替,StackPane因为它不会自动安排子节点。

要阅读有关布局行为的更多信息,我建议您通过以下答案

对于创建的每个圆圈,EventHandler向其中添加一个以对其进行监控Right-Clicks,然后将其从中删除Parent

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

public class AddAndRemoveCircles extends Application {

    @Override
    public void start(Stage primaryStage) {
        Group root = new Group();
        Scene scene = new Scene(root, 350, 300);
        primaryStage.setTitle("Dots");
        primaryStage.setScene(scene);

        scene.addEventHandler(MouseEvent.MOUSE_CLICKED, (MouseEvent me) -> {
            if(me.getButton().equals(MouseButton.PRIMARY)) {
                Circle circle = new Circle(me.getX(), me.getY(), 10, Color.BLUE);
                addEventHandler(root, circle);
                root.getChildren().add(circle);
            }
        });

        primaryStage.show();
    }

    public void addEventHandler(Group parent, Node node) {
        node.addEventHandler(MouseEvent.MOUSE_CLICKED, (MouseEvent me) -> {
            if(me.getButton().equals(MouseButton.SECONDARY)) {
                parent.getChildren().remove(node);
            }
        });
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MouseEvent-将圆添加到场景

来自分类Dev

SpriteKit:将多个SKSpriteNodes添加到场景中

来自分类Dev

将节点添加到场景视图的问题

来自分类Dev

无法将精灵添加到场景

来自分类Dev

无法将导航栏添加到场景:根视图控制器问题?

来自分类Dev

将图像添加到场景时的CSS解析错误

来自分类Dev

将SKLabelNode添加到场景工具包视图

来自分类Dev

将Hud图层添加到场景Cocos2d-3

来自分类Dev

无法将多个Pod资源添加到场景中

来自分类Dev

无法将节点添加到场景中(Sprite Kit)

来自分类Dev

BooleanProperty,其值取决于是否将节点添加到场景中

来自分类Dev

如何将动画 gif 添加到场景中?

来自分类Dev

如何找到添加到场景中的新项目?

来自分类Dev

为了将多个对象添加到场景中,处理触摸动作的最佳方法是什么?

来自分类Dev

如何获取场景中的元素JavaFX /将对象动态添加到场景

来自分类Dev

循环遍历节点数组以添加影响外部变量的MouseEvent

来自分类Dev

获取MouseEvent以将TilePane中的ImageView定位为目标

来自分类Dev

模拟MouseEvent

来自分类Dev

MouseEvent的键码?

来自分类Dev

在SpriteKit游戏中将UIView添加到场景的后面

来自分类Dev

为什么不将我的SpriteNode添加到场景中?

来自分类Dev

渲染THREE.js后无法添加到场景

来自分类Dev

如何在Unity中通过单击按钮将对象添加到场景?

来自分类Dev

可以在ThreeJS中将色相添加到场景中吗?

来自分类Dev

如何在Three.js中将画布绘图添加到场景?

来自分类Dev

在SpriteKit游戏中将UIView添加到场景的后面

来自分类Dev

如何在Unity中通过单击按钮将对象添加到场景?

来自分类Dev

将圆添加到多个路径

来自分类Dev

无法渲染在jQuery $ .get请求函数中添加到场景中的三个js对象

Related 相关文章

  1. 1

    MouseEvent-将圆添加到场景

  2. 2

    SpriteKit:将多个SKSpriteNodes添加到场景中

  3. 3

    将节点添加到场景视图的问题

  4. 4

    无法将精灵添加到场景

  5. 5

    无法将导航栏添加到场景:根视图控制器问题?

  6. 6

    将图像添加到场景时的CSS解析错误

  7. 7

    将SKLabelNode添加到场景工具包视图

  8. 8

    将Hud图层添加到场景Cocos2d-3

  9. 9

    无法将多个Pod资源添加到场景中

  10. 10

    无法将节点添加到场景中(Sprite Kit)

  11. 11

    BooleanProperty,其值取决于是否将节点添加到场景中

  12. 12

    如何将动画 gif 添加到场景中?

  13. 13

    如何找到添加到场景中的新项目?

  14. 14

    为了将多个对象添加到场景中,处理触摸动作的最佳方法是什么?

  15. 15

    如何获取场景中的元素JavaFX /将对象动态添加到场景

  16. 16

    循环遍历节点数组以添加影响外部变量的MouseEvent

  17. 17

    获取MouseEvent以将TilePane中的ImageView定位为目标

  18. 18

    模拟MouseEvent

  19. 19

    MouseEvent的键码?

  20. 20

    在SpriteKit游戏中将UIView添加到场景的后面

  21. 21

    为什么不将我的SpriteNode添加到场景中?

  22. 22

    渲染THREE.js后无法添加到场景

  23. 23

    如何在Unity中通过单击按钮将对象添加到场景?

  24. 24

    可以在ThreeJS中将色相添加到场景中吗?

  25. 25

    如何在Three.js中将画布绘图添加到场景?

  26. 26

    在SpriteKit游戏中将UIView添加到场景的后面

  27. 27

    如何在Unity中通过单击按钮将对象添加到场景?

  28. 28

    将圆添加到多个路径

  29. 29

    无法渲染在jQuery $ .get请求函数中添加到场景中的三个js对象

热门标签

归档