在com.sun.lwuit.component的pointerDragged函数,贴出源代码: CODE: /** * If this Component is focused, the pointer dragged event * will call this method * * @param x the pointer x coordinate * @param y the pointer y coordinate */ public void pointerDragged(int x, int y) { if (isScrollable() && isSmoothScrolling()) { int axisValue; if (isScrollableY()) { axisValue = y; } else { axisValue = x; } if (!dragActivated) { dragActivated = true; beforeLastScrollY = axisValue; lastScrollY = axisValue; getComponentForm().setDraggedComponent(this); } //save time and locations to create velocity when the //pointer is released long currentTime = System.currentTimeMillis(); if (currentTime != lastTime[(pLastDragged + lastTime.length + 1) % lastTime.length]) { lastTime[pLastDragged] = System.currentTimeMillis(); lastDragged[pLastDragged] = axisValue; pLastDragged = (++pLastDragged) % lastTime.length; } beforeLastScrollY = lastScrollY; lastScrollY = axisValue; // we drag inversly to get a feel of grabbing a physical screen // and pulling it in the reverse direction of the drag if (isScrollableY()) { //解决滚动条定位问题和方向问题-----begin int h = getHeight() - getStyle().getPadding(TOP) - getStyle().getPadding(BOTTOM); int scroll = getScrollY() - (beforeLastScrollY - axisValue)*getPreferredH()/h; //解决滚动条定位问题和方向问题-----end if (scroll >= 0 && scroll < getPreferredH() - getHeight()) { setScrollY(scroll); } } else { int scroll = getScrollX() - (beforeLastScrollY - axisValue); if (scroll >= 0 && scroll < getPreferredW() - getWidth()) { setScrollX(scroll); } } } else { //try to find a scrollable element until you reach the Form Component parent = getParent(); if (!(parent instanceof Form)) { parent.pointerDragged(x, y); } } }
解决lwuit程序在触摸屏中滚动条的方向与定位问题
最新推荐文章于 2021-02-28 05:54:37 发布