假设我在BoxLayout.Y-scrollable-Y容器中有一个自定义滑块组件,其中很多。自定义滑块组件覆盖了所有容器。
我想要的是,滑块组件处理X轴上的pointerDragged,同时仍然使Container可以拖动以滚动“列表”,就像根本没有滑块组件一样。
我能想到的唯一方法似乎是破解。我可以通过重写滑块组件中的某些方法来做到这一点,以便它将指针事件转发到其Container,如下所示:
@Override
protected int getDragRegionStatus(int x, int y) {
return Component.DRAG_REGION_LIKELY_DRAG_XY;
}
@Override
public void pointerDragged(int x, int y) {
super.pointerDragged(x, y);
{
// Handle X-axis dragging here
}
boolean focusable = getParent().isFocusable();
try { // handle Y-axis dragging there
getParent().setFocusable(true);
getParent().pointerDragged(x, y);
} finally {
getParent().setFocusable(focusable);
}
}
我怀疑这是应该这样做的方式。但是就像上面写的那样,这是我想到如何使其与Codename One一起工作的唯一方法。
但是您如何使它正常工作?
答案 0 :(得分:0)
为什么会被黑客入侵?
您要尝试实现一种特殊情况,可以通过重写表单指针事件或将侦听器绑定到表单本身来实现。