2014-08-30 68 views
1

我有特定的頁面,上面有幾個CellTables。使用GWT/Java/JavaScript滾動到可滾動對象的特定位置

它們非常大,我有一個觸控板水平滾動的問題(看起來像,它沒有在GWT上)。 這就是爲什麼我選擇使用滾動處理他們:

MouseWheelHandler handler = new MouseWheelHandler() { 

     @Override 
     public void onMouseWheel(MouseWheelEvent event) { 
      event.preventDefault(); 
      int velocityX = 0; 
      int velocityY = 0; 
      int positionx=0; 
      int positiony=0; 

      positionx=event.getX(); 
      positiony=event.getY(); 
      velocityX = getMouseWheelVelocityX(event.getNativeEvent())/10; 
      velocityY = getMouseWheelVelocityY(event.getNativeEvent())/10; 

      positionx=positionx+velocityX; 
      positiony=positiony+velocityY; 

     } 
    }; 

我正在滾動的X和Y軸和滾動的新位置的速度。 我需要做的最後一件事是滾動到特定位置(如positionX)或滾動特定數量的像素(例如velocityX)。 但我無法使用javascript scrollByscrollTo,因爲它們應用於整個窗口,而不是用於特定對象(我的CellTables)。

如何滾動到對象的特定像素位置?

回答

0

你有兩個選擇:

  1. 把你CellTable小部件ScrollPanel內。 ScrollPanel具有您需要的所有方法(如setHorizontalScrollPosition()等)

  2. 使用DataGrid小部件而不是CellTable。 DataGrid小部件有一個固定的頁眉和頁腳(如果需要)和一個可滾動的內容。

+0

嗯,我已經試過了,但有一個錯誤,而試圖 'scrollPanel.setHorizo​​ntalScrollPosition(位X);'' scrollPanel.setVerticalScrollPosition(位置▲);' 中的scrollHandler,因爲我不能改變scrollPanel的位置就是它的處理程序:(我怎樣才能改變ScrollPanel ScrollHandler的滾動位置? – 2014-08-31 05:48:26

+0

原因是,scrollPanel不是最終的,但仍需要更多的調查 – 2014-08-31 06:06:06

+0

謝謝!它終於起作用了! – 2014-08-31 12:17:31