Events java fx事件在线处理

Events java fx事件在线处理,events,line,javafx-2,Events,Line,Javafx 2,我发现了一篇关于JavFx2和这篇文章的非常有趣的文章 我想知道如何创建一个扩展线条特征的对象,以便插入事件管理 例如,单次鼠标左键单击、双次鼠标左键单击绘制的线,或在鼠标悬停在该线(选中的线)上时按keybooard中的canc键,或在该线外单击鼠标左键 非常感谢。我刚刚遇到了同样的问题 我想有一个“绘图面板”,在那里我可以放置辅助线是可拖动的。 您可以通过“setOnMousePressed”和“SetOnMouseDrawled”附加鼠标手柄以获得此类行为 但最大的问题是,线条尺寸太小,

我发现了一篇关于JavFx2和这篇文章的非常有趣的文章

我想知道如何创建一个扩展线条特征的对象,以便插入事件管理

例如,单次鼠标左键单击、双次鼠标左键单击绘制的线,或在鼠标悬停在该线(选中的线)上时按keybooard中的canc键,或在该线外单击鼠标左键


非常感谢。

我刚刚遇到了同样的问题

我想有一个“绘图面板”,在那里我可以放置辅助线是可拖动的。 您可以通过“setOnMousePressed”和“SetOnMouseDrawled”附加鼠标手柄以获得此类行为

但最大的问题是,线条尺寸太小,你必须幸运地用鼠标点击它

这就是为什么我用另一种方式实现它。 我将鼠标处理程序附加到绘图面板,每次单击鼠标时,我都会检查鼠标指针是否位于任何辅助线的附近。 这让我有机会添加一点公差,这样就可以单击和拖动线条

我不能说这是不是最有效的方法,如果有人想出更好的主意,我会很高兴

编辑: 与此同时,我写了一个小测试,发现我的第一个想法不是那么好

我的第二个想法是将线条包裹在窗格中,并将其y坐标(对于垂直线)居中放置在该窗格中。 在那个窗格上,我设置了鼠标处理程序。由于我制作的窗格的首选高度为5像素,现在鼠标光标可以捕捉到这条线

如果有人对这个想法感兴趣,我可以发布一些示例代码


您好,-chris-

这是使用JavaFX时经常出现的问题。目前,我正在将所有薄的视觉效果与不可见的厚的视觉效果叠加,并在厚的视觉效果上注册事件侦听器

例如,您有一个由多条线段组成的连接:

// construct invisible fat lines for selection
selectionLines.getChildren().clear();
for (Node child : connection.getChildren()) {
    Line line = (Line) child;
    Line selLine = new Line(line.getStartX(), line.getStartY(), line.getEndX(), line.getEndY());
    selLine.setLayoutX(line.getLayoutX());
    selLine.setLayoutY(line.getLayoutY());
    selLine.setStrokeWidth(SELECTION_LINE_WIDTH);
    selLine.setStroke(INVISIBLE);
    selectionLines.getChildren().add(selLine);
}
connection.getChildren().add(selectionLines);