⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gscrollhandler.java

📁 use Java code to draw on pad canvas
💻 JAVA
字号:
package no.geosoft.cc.graphics;import java.awt.Adjustable;import java.awt.event.AdjustmentListener;import java.awt.event.AdjustmentEvent;/** * Class for handling window scrollbars. * @see GScene.installScrollHandler() *  * @author <a href="mailto:jacob.dreyer@geosoft.no">Jacob Dreyer</a> */   class GScrollHandler  implements AdjustmentListener{  private final GScene      scene_;  private final Adjustable  hScrollBar_;  private final Adjustable  vScrollBar_;    /**   * Create a scroll handler for the specified scene and with the   * specified scroll bars.   * <p>   * <b>NOTE:</b> Do not use the scrollbars of a JScrollPane for this purpose.   *    * @param scene       Scene to make scrollable.   * @param hScrollBar  The horizontal scrollbar (or null if none).   * @param vScrollBar  The vertical scrollbar (or null if none).   */  GScrollHandler (GScene scene,                  Adjustable hScrollBar, Adjustable vScrollBar)  {    scene_ = scene;        hScrollBar_ = hScrollBar;    vScrollBar_ = vScrollBar;    hScrollBar_.addAdjustmentListener (this);    vScrollBar_.addAdjustmentListener (this);    updateScrollBars();  }    /**   * Update the scrollbars according to the current setting of the   * scene viewport and world extents.   */  void updateScrollBars()  {    hScrollBar_.removeAdjustmentListener (this);    vScrollBar_.removeAdjustmentListener (this);        GWorldExtent  worldExtent = scene_.getInitialWorldExtent();    GViewport     viewport    = scene_.getViewport();    GTransformer  transformer = scene_.getTransformer();        int  viewport0[] = viewport.get (0);    int  world0[]    = transformer.worldToDevice (worldExtent.get (2));    int  viewport1[] = viewport.get (1);    int  world1[]    = transformer.worldToDevice (worldExtent.get (1));    int  viewport2[] = viewport.get (2);    int  world2[]    = transformer.worldToDevice (worldExtent.get (0));    //    // Set horizontal scrollbar    //    if (hScrollBar_ != null) {      int minimum        = Math.min (viewport0[0], world0[0]);      int maximum        = Math.max (viewport1[0], world1[0]);            int value          = viewport0[0];      int visibleAmount  = viewport1[0] - viewport0[0];      int unitIncrement  = (int) Math.max (1, Math.round (visibleAmount * 0.1));      int blockIncrement = (int) Math.max (1, Math.round (visibleAmount * 0.9));      hScrollBar_.setMinimum (minimum);      hScrollBar_.setMaximum (maximum);            hScrollBar_.setValue (value);      hScrollBar_.setVisibleAmount (visibleAmount);      hScrollBar_.setUnitIncrement (unitIncrement);      hScrollBar_.setBlockIncrement (blockIncrement);    }    //    // Set vertical scrollbar    //    if (vScrollBar_ != null) {      int minimum        = Math.min (viewport0[1], world0[1]);      int maximum        = Math.max (viewport2[1], world2[1]);            int value          = viewport0[1];      int visibleAmount  = viewport2[1] - viewport0[1];      int unitIncrement  = (int)Math.max (1, Math.round (visibleAmount * 0.1));      int blockIncrement = (int)Math.max (1, Math.round (visibleAmount * 0.9));      vScrollBar_.setMinimum (minimum);      vScrollBar_.setMaximum (maximum);            vScrollBar_.setValue (value);            vScrollBar_.setVisibleAmount (visibleAmount);      vScrollBar_.setUnitIncrement (unitIncrement);      vScrollBar_.setBlockIncrement (blockIncrement);    }    hScrollBar_.addAdjustmentListener (this);    vScrollBar_.addAdjustmentListener (this);      }    /**   * Called as a response to scrollbar access. Adjust the world extent   * according to new scrollbar setting.   *    * @param event  Event trigging this method.   */  public void adjustmentValueChanged (AdjustmentEvent event)  {    GViewport viewport = scene_.getViewport();    int x0 = viewport.getX0();    int y0 = viewport.getY0();    int x1 = viewport.getX3();    int y1 = viewport.getY3();    if (hScrollBar_ != null) {      int hValue         = hScrollBar_.getValue();      int hVisibleAmount = hScrollBar_.getVisibleAmount();      x0 = hValue;      x1 = hValue + hVisibleAmount;    }    if (vScrollBar_ != null) {      int vValue         = vScrollBar_.getValue();      int vVisibleAmount = vScrollBar_.getVisibleAmount();            y0 = vValue;      y1 = vValue + vVisibleAmount;    }    scene_.zoom (x0, y0, x1, y1);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -