首页 > 解决方案 > 从 ActionEvent 发送到 DragOverListener 的 y 坐标*减小*,即使仅向下拖动也是如此

问题描述

如果您尝试执行下面的小代码示例,您可以看到给定拖动标签上的 dragOverListener每隔两次就会使用先前的 y 值调用一次。

我猜这是由于 Component:private void pointerDragged(final int x, final int y, final Object currentPointerPress)中的代码创建了一个run()调用pointerDragged并执行两次(可能与以下 x,y 坐标交错)。

这似乎是一个不受欢迎的副作用,它给我的代码带来了问题,因为我使用连续 y 值之间的差异来确定被拖动的元素是向上还是向下拖动。

或者,如果您对拖动元素确定其拖动方向的另一种可靠方法有建议,那也很好。

//try to drag any element in the list downwards. Notice that every second y value will refer to the previous (smaller) value of y
Form hi1 = new Form();
hi1.setLayout(BoxLayout.y());
for (int i = 0; i < 40; i++) {
    Label l = new Label("Label " + i);
    l.setDraggable(true);
    l.setDropTarget(true);
    l.addDragOverListener((e) -> {
        Log.p(l.getText()+", y=" + e.getY());
    });
    hi1.add(l);
}
hi1.show();
```

标签: codenameone

解决方案


推荐阅读