【问题标题】:JavaFX check what's under MouseClickJavaFX 检查 MouseClick 下的内容
【发布时间】:2017-11-05 22:05:34
【问题描述】:

我有ArrayList<ImageView> imageViews = new ArrayList<>();,所以它包含图像。 图像在按钮单击时创建,保存到该阵列并出现在该阵列的场景中。代码有点乱,不过嘿嘿,一开始是#makeItWork #makeItRight 后来...

    public void btnAddAndAction() throws FileNotFoundException {
        algorithm.addElement(algorithm.calculateId(),"AND",null);
        imageViews.add(new ImageView(algorithm.getLastElementImg()));
                imageViews.get(imageViews.size()-1).setX(25); //default pos
                imageViews.get(imageViews.size()-1).setY(85);
                pane.getChildren().add( imageViews.get(imageViews.size()-1));
                pane.requestLayout();
    imageViews.get(imageViews.size()-1).setOnMousePressed(imgOnMousePressedEventHandler);
           imageViews.get(imageViews.size()-1).setOnMouseDragged(imgOnMouseDraggedEventHandler);
            }


    //FIXME
    EventHandler<MouseEvent> imgOnMousePressedEventHandler =
            new EventHandler<MouseEvent>() {

                @Override
                public void handle(MouseEvent t) {
                    orgSceneX = t.getSceneX();
                    orgSceneY = t.getSceneY();
                    orgTranslateX = ((imageViews.get(imageViews.size()-1)).getTranslateX());
                    orgTranslateY = ((imageViews.get(imageViews.size()-1)).getTranslateY());
                }
            };
//FIXME
    EventHandler<MouseEvent> imgOnMouseDraggedEventHandler =
            new EventHandler<MouseEvent>() {

                @Override
                public void handle(MouseEvent t) {
                    double offsetX = t.getSceneX() - orgSceneX;
                    double offsetY = t.getSceneY() - orgSceneY;
                    double newTranslateX = orgTranslateX + offsetX;
                    double newTranslateY = orgTranslateY + offsetY;

                    (imageViews.get(imageViews.size()-1)).setTranslateX(newTranslateX);
                    (imageViews.get(imageViews.size()-1)).setTranslateY(newTranslateY);
                }
            };

我正在尝试对图像进行拖放功能,但我正在努力检测鼠标下方的内容...

我从MouseEvent 找到了getSource,但它需要对象...

所以:我怎么知道,数组的哪个元素被按下以便我可以拖动它??

Java 1.8、JavaFX、IntelliJ。

【问题讨论】:

  • 为每个图像创建不同的处理程序
  • 另外我不太确定使用getSource() 有什么问题...你是什么意思“它需要对象”?
  • 我的意思是我需要将对象传递给它,而不是 ImageView...顺便说一句,关于每个图像的不同处理程序:你的意思是把它也放在列表或某种数组中,并有一个单独的用于图像列表中的每个元素?只是为了确保它......听起来它可能会让它工作,因为现在它总是移动列表的最后一个元素,即使我试图拖动另一张图片。
  • 一个ImageView 是一个 Object。如果EventHandler 被添加到ImageView 中,那么MouseEvent 的来源在由EventHandler 处理时是ImageView。只需转换getSource() 的结果即可。
  • 哦,cast,对...现在可以正常使用了,谢谢!!

标签: java intellij-idea javafx drag-and-drop mouseevent


【解决方案1】:

解决方案是CAST ImageView...答案在评论部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    相关资源
    最近更新 更多