如何在组件及其容器中处理指针事件?

时间:2019-06-06 09:32:37

标签: codenameone

假设我在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一起工作的唯一方法。

但是您如何使它正常工作?

1 个答案:

答案 0 :(得分:0)

为什么会被黑客入侵?

您要尝试实现一种特殊情况,可以通过重写表单指针事件或将侦听器绑定到表单本身来实现。