JavaFX拖动以修改节点

JavaFX drag in order to modify nodes

我在这里是因为我的研究和测试让我无处可去。

我做了一个小日历应用程序,现在我想用漂亮的控件改进用户界面。我正在尝试实现一个界面,您可以在其中通过拖动来创建事件(就像您在 Google 议程中所做的那样,实际上这是一个学校项目,我想重现本周视图)。

为此,我尝试了以下方法: 对于该区域的每个单元格(包含 VBox 的 GridPane),我附加了实现该功能的处理程序(setOnDragDetected、setOnMouseDragEntered 和 setOnMouseDragReleased)。它做得很好,但在某些情况下这不起作用(如果鼠标移到另一个没有处理程序的事件上,则拖动功能停止)。

因为我看到这个太重而且容易伪造(3 个处理程序 x 7 列 x 48 行 = 1008 个处理程序!!),我考虑了其他方法,但我是 javaFX 的初学者,我不知道如果有其他机制来执行此操作。 (我考虑过一个透明的 layout/pane 来处理这个特性,并在我的应用程序中充当 "touch screen",但我没有找到令人满意的答案)。有人可以启发我了解此类问题吗?作为我尝试实现的一个很好的例子,请使用 Google 议程的行为来使用鼠标创建事件(我不需要管理事件的重叠)。提前致谢 !! 我 post 实际视图的图片。

所以 Tomas Mikula 建议我只将我的处理程序附加到 GridPane(而不是像我之前所做的那样附加到每个 "cell"):setOnDragDetected、setOnMouseDragOver、setOnMouseDragReleased 和 setOnMouseDragExited。

由于处理程序是在 GridPane 上触发的,因此将鼠标移到其他元素上不会停止该功能。

由此我减少了处理程序的数量,简化了代码(因为我不需要管理额外的行为作为另一个 child 的推动者)。

谢谢!