【问题标题】:JavaFX Drawing Shapes via MouseJavaFX 通过鼠标绘制形状
【发布时间】:2016-03-13 12:39:50
【问题描述】:

有没有简单的方法通过移动鼠标来绘制一些形状?

更具体地说,我正在做一个截图程序,所以我想以某种方式选择显示区域。 我认为它就像在 A 点上按住鼠标键并将其实时移动到 B 点,在 A 点和当前点之间绘制矩形。

抱歉语言不好,英语不是我的母语。

【问题讨论】:

  • 没有内置任何东西:您只需要直接使用鼠标处理程序来实现它。 (setOnMousePressed(...)setOnMouseDragged(...)setOnMouseReleased(...))。

标签: javafx drawing


【解决方案1】:

在这种情况下,我使用了一个名为 scene 的 Scene 对象。这个或类似的东西可能应该做你想做的事,也许你必须在dragBox.setTranslatedragBox.setWidth/.setHeight之间切换,在你向上或向左而不是向下和向右拖动的情况下。

Rectangle dragBox = new Rectangle(0, 0, 0, 0);
dragBox.setVisible(false);
scene.addEventFilter(MouseEvent.ANY, new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent mouseEvent) {
        if(mouseEvent.getEventType() == MouseEvent.MOUSE_CLICKED){
            dragBox.setVisible(true);
            dragBox.setTranslateX(mouseEvent.getX());
            dragBox.setTranslateY(mouseEvent.getY());
        }
        if(mouseEvent.getEventType() == MouseEvent.MOUSE_MOVED && dragBox.isVisible()){
            dragBox.setWidth(mouseEvent.getX() - dragBox.getTranslateX());
            dragBox.setHeight(mouseEvent.getY() - dragBox.getTranslateY());
        }
        if(mouseEvent.getEventType() == MouseEvent.MOUSE_RELEASED)
            dragBox.setVisible(false);
    }
});

您还必须确保将拖动框添加到场景中正在显示的窗格中,否则拖动框将根本不可见。

【讨论】:

  • 它不像预期的那样工作:c 但我明白你是如何做到的。感谢您的帮助:)
  • 很好,如果你发现我可能犯了什么错误,请告诉我,我想我最好改进答案:) 无论如何我最终会自己做,但我有一个截止日期在几个小时内完成一个 Java 项目,所以必须先完成。
猜你喜欢
  • 2020-07-17
  • 2012-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
相关资源
最近更新 更多