0

我构建了一个具有许多可导航功能的自定义日历控件,我现在面临的唯一问题是 shift+scrollwheel 上的月份跳转。

mainb.setOnScroll(e->{
            mainb.requestFocus();
            System.out.println(e.getDeltaY());
            if(e.isShiftDown()){
                if(e.getDeltaY()>0)
                    prev.fire();
                else
                    next.fire();
            }else if(e.isControlDown()){
                System.out.println(e.getDeltaY());
                if(e.getDeltaY()>0)
                    prevDay();
                else
                    nextDay();
            }else{
                if(e.getDeltaY()>0)
                    prevWeek();
                else
                    nextWeek();
            }
        });

代码 + 组件 + 控制台结果

            if(e.isShiftDown()){
                if(e.getDeltaY()>0)//always 0.0
                    prev.fire();//never fired
                else
                    next.fire();//always fired
            }
4

1 回答 1

1

似乎 shift 键用于从垂直滚动切换到水平滚动(请参阅:错误)。因此,e.getDeltaY()当按下 shift 键时将返回 0。e.getDeltaX()在这种情况下使用。

于 2018-10-08T17:48:48.413 回答