如果尝试执行下面的小代码示例,则可以看到给定拖动标签上的dragOverListener每秒被调用一次 previous 值y。
我猜这是由于组件: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();
```