亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jviewport.java

?? linux下編程用 編譯軟件
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
  }  public final Insets getInsets(Insets insets)  {    if (insets == null)      return getInsets();    insets.top = 0;    insets.bottom = 0;    insets.left = 0;    insets.right = 0;    return insets;  }      /**   * Overridden to return <code>false</code>, so the JViewport's paint method   * gets called instead of directly calling the children. This is necessary   * in order to get a useful clipping and translation on the children.   *   * @return <code>false</code>   */  public boolean isOptimizedDrawingEnabled()  {    return false;  }  public void paint(Graphics g)  {    Component view = getView();    if (view == null)      return;    Point pos = getViewPosition();    Rectangle viewBounds = view.getBounds();    Rectangle portBounds = getBounds();    if (viewBounds.width == 0         || viewBounds.height == 0        || portBounds.width == 0        || portBounds.height == 0)      return;    switch (getScrollMode())      {      case JViewport.BACKINGSTORE_SCROLL_MODE:        paintBackingStore(g);        break;      case JViewport.BLIT_SCROLL_MODE:        paintBlit(g);        break;      case JViewport.SIMPLE_SCROLL_MODE:      default:        paintSimple(g);        break;      }    damaged = false;  }  public void addChangeListener(ChangeListener listener)  {    listenerList.add(ChangeListener.class, listener);  }  public void removeChangeListener(ChangeListener listener)  {    listenerList.remove(ChangeListener.class, listener);  }  public ChangeListener[] getChangeListeners()   {    return (ChangeListener[]) getListeners(ChangeListener.class);  }  /**   * This method returns the String ID of the UI class of  Separator.   *   * @return The UI class' String ID.   */  public String getUIClassID()  {    return "ViewportUI";  }  /**   * This method resets the UI used to the Look and Feel defaults..   */  public void updateUI()  {    setUI((ViewportUI) UIManager.getUI(this));  }              /**   * This method returns the viewport's UI delegate.   *   * @return The viewport's UI delegate.   */  public ViewportUI getUI()  {    return (ViewportUI) ui;  }  /**   * This method sets the viewport's UI delegate.   *   * @param ui The viewport's UI delegate.   */  public void setUI(ViewportUI ui)  {    super.setUI(ui);  }  public final void setBorder(Border border)  {    if (border != null)      throw new IllegalArgumentException();  }  /**   * Scrolls the view so that contentRect becomes visible.   *   * @param contentRect the rectangle to make visible within the view   */  public void scrollRectToVisible(Rectangle contentRect)  {    Component view = getView();    if (view == null)      return;              Point pos = getViewPosition();    Rectangle viewBounds = getView().getBounds();    Rectangle portBounds = getBounds();        if (isShowing())      getView().validate();    // If the bottom boundary of contentRect is below the port    // boundaries, scroll up as necessary.    if (contentRect.y + contentRect.height + viewBounds.y > portBounds.height)      pos.y = contentRect.y + contentRect.height - portBounds.height;    // If contentRect.y is above the port boundaries, scroll down to    // contentRect.y.    if (contentRect.y + viewBounds.y < 0)      pos.y = contentRect.y;    // If the right boundary of contentRect is right from the port    // boundaries, scroll left as necessary.    if (contentRect.x + contentRect.width + viewBounds.x > portBounds.width)      pos.x = contentRect.x + contentRect.width - portBounds.width;    // If contentRect.x is left from the port boundaries, scroll right to    // contentRect.x.    if (contentRect.x + viewBounds.x < 0)      pos.x = contentRect.x;    setViewPosition(pos);  }  /**   * Returns the accessible context for this <code>JViewport</code>. This   * will be an instance of {@link AccessibleJViewport}.   *   * @return the accessible context for this <code>JViewport</code>   */  public AccessibleContext getAccessibleContext()  {    if (accessibleContext == null)      accessibleContext = new AccessibleJViewport();    return accessibleContext;  }  /**   * Forward repaint to parent to make sure only one paint is performed by the   * RepaintManager.   *   * @param tm number of milliseconds to defer the repaint request   * @param x the X coordinate of the upper left corner of the dirty area   * @param y the Y coordinate of the upper left corner of the dirty area   * @param w the width of the dirty area   * @param h the height of the dirty area   */  public void repaint(long tm, int x, int y, int w, int h)  {    Component parent = getParent();    if (parent != null)      {        parent.repaint(tm, x + getX(), y + getY(), w, h);      }  }  protected void addImpl(Component comp, Object constraints, int index)  {    if (getComponentCount() > 0)      remove(getComponents()[0]);        super.addImpl(comp, constraints, index);  }  protected void fireStateChanged()  {    ChangeListener[] listeners = getChangeListeners();    for (int i = 0; i < listeners.length; ++i)      listeners[i].stateChanged(changeEvent);  }  /**   * Creates a {@link ViewListener} that is supposed to listen for   * size changes on the view component.   *   * @return a ViewListener instance   */  protected ViewListener createViewListener()  {    return new ViewListener();  }  /**   * Creates the LayoutManager that is used for this viewport. Override   * this method if you want to use a custom LayoutManager.   *   * @return a LayoutManager to use for this viewport   */  protected LayoutManager createLayoutManager()  {    return new ViewportLayout();  }  /**   * Computes the parameters for the blitting scroll method. <code>dx</code>   * and <code>dy</code> specifiy the X and Y offset by which the viewport   * is scrolled. All other arguments are output parameters and are filled by   * this method.   *   * <code>blitFrom</code> holds the position of the blit rectangle in the   * viewport rectangle before scrolling, <code>blitTo</code> where the blitArea   * is copied to.   *   * <code>blitSize</code> holds the size of the blit area and   * <code>blitPaint</code> is the area of the view that needs to be painted.   *   * This method returns <code>true</code> if blitting is possible and   * <code>false</code> if the viewport has to be repainted completetly without   * blitting.   *   * @param dx the horizontal delta   * @param dy the vertical delta   * @param blitFrom the position from where to blit; set by this method   * @param blitTo the position where to blit area is copied to; set by this   *        method   * @param blitSize the size of the blitted area; set by this method   * @param blitPaint the area that needs repainting; set by this method   *   * @return <code>true</code> if blitting is possible,   *         <code>false</code> otherwise   */  protected boolean computeBlit(int dx, int dy, Point blitFrom, Point blitTo,                                Dimension blitSize, Rectangle blitPaint)  {    if ((dx != 0 && dy != 0) || damaged)      // We cannot blit if the viewport is scrolled in both directions at      // once.      return false;    Rectangle portBounds = SwingUtilities.calculateInnerArea(this, getBounds());    // Compute the blitFrom and blitTo parameters.    blitFrom.x = portBounds.x;    blitFrom.y = portBounds.y;    blitTo.x = portBounds.x;    blitTo.y = portBounds.y;    if (dy > 0)      {        blitFrom.y = portBounds.y + dy;      }    else if (dy < 0)      {        blitTo.y = portBounds.y - dy;      }    else if (dx > 0)      {        blitFrom.x = portBounds.x + dx;      }    else if (dx < 0)      {        blitTo.x = portBounds.x - dx;      }    // Compute size of the blit area.    if (dx != 0)      {        blitSize.width = portBounds.width - Math.abs(dx);        blitSize.height = portBounds.height;      }    else if (dy != 0)      {        blitSize.width = portBounds.width;        blitSize.height = portBounds.height - Math.abs(dy);      }    // Compute the blitPaint parameter.    blitPaint.setBounds(portBounds);    if (dy > 0)      {        blitPaint.y = portBounds.y + portBounds.height - dy;        blitPaint.height = dy;      }    else if (dy < 0)      {        blitPaint.height = -dy;      }    if (dx > 0)      {        blitPaint.x = portBounds.x + portBounds.width - dx;        blitPaint.width = dx;      }    else if (dx < 0)      {        blitPaint.width = -dx;      }    return true;  }  /**   * Paints the viewport in case we have a scrollmode of   * {@link #SIMPLE_SCROLL_MODE}.   *   * This simply paints the view directly on the surface of the viewport.   *   * @param g the graphics context to use   */  void paintSimple(Graphics g)  {    Point pos = getViewPosition();    Component view = getView();    boolean translated = false;    try      {        g.translate(-pos.x, -pos.y);        translated = true;        view.paint(g);      }     finally      {        if (translated)          g.translate (pos.x, pos.y);      }  }  /**   * Paints the viewport in case we have a scroll mode of   * {@link #BACKINGSTORE_SCROLL_MODE}.   *   * This method uses a backing store image to paint the view to, which is then   * subsequently painted on the screen. This should make scrolling more   * smooth.   *   * @param g the graphics context to use   */  void paintBackingStore(Graphics g)  {    // If we have no backing store image yet or the size of the component has    // changed, we need to rebuild the backing store.    if (backingStoreImage == null || sizeChanged)      {        backingStoreImage = createImage(getWidth(), getHeight());        sizeChanged = false;        Graphics g2 = backingStoreImage.getGraphics();        paintSimple(g2);        g2.dispose();      }    // Otherwise we can perform the blitting on the backing store image:    // First we move the part that remains visible after scrolling, then    // we only need to paint the bit that becomes newly visible.    else      {        Graphics g2 = backingStoreImage.getGraphics();        Point viewPosition = getViewPosition();        int dx = viewPosition.x - lastPaintPosition.x;        int dy = viewPosition.y - lastPaintPosition.y;        boolean canBlit = computeBlit(dx, dy, cachedBlitFrom, cachedBlitTo,                                      cachedBlitSize, cachedBlitPaint);        if (canBlit)          {            // Copy the part that remains visible during scrolling.            g2.copyArea(cachedBlitFrom.x, cachedBlitFrom.y,                        cachedBlitSize.width, cachedBlitSize.height,                        cachedBlitTo.x - cachedBlitFrom.x,                        cachedBlitTo.y - cachedBlitFrom.y);            // Now paint the part that becomes newly visible.            g2.setClip(cachedBlitPaint.x, cachedBlitPaint.y,                       cachedBlitPaint.width, cachedBlitPaint.height);            paintSimple(g2);          }        // If blitting is not possible for some reason, fall back to repainting        // everything.        else          {            paintSimple(g2);          }        g2.dispose();      }    // Actually draw the backingstore image to the graphics context.    g.drawImage(backingStoreImage, 0, 0, this);    // Update the lastPaintPosition so that we know what is already drawn when    // we paint the next time.    lastPaintPosition.setLocation(getViewPosition());  }  /**   * Paints the viewport in case we have a scrollmode of   * {@link #BLIT_SCROLL_MODE}.   *   * This paints the viewport using a backingstore and a blitting algorithm.   * Only the newly exposed area of the view is painted from the view painting   * methods, the remainder is copied from the backing store.   *   * @param g the graphics context to use   */  void paintBlit(Graphics g)  {    // We cannot perform blitted painting as it is described in Sun's API docs.    // There it is suggested that this painting method should blit directly    // on the parent window's surface. This is not possible because when using    // Swing's double buffering (at least our implementation), it would    // immediatly be painted when the buffer is painted on the screen. For this    // to work we would need a kind of hole in the buffer image. And honestly    // I find this method not very elegant.    // The alternative, blitting directly on the buffer image, is also not    // possible because the buffer image gets cleared everytime when an opaque    // parent component is drawn on it.    // What we do instead is falling back to the backing store approach which    // is in fact a mixed blitting/backing store approach where the blitting    // is performed on the backing store image and this is then drawn to the    // graphics context. This is very robust and works independent of the    // painting mechanism that is used by Swing. And it should have comparable    // performance characteristics as the blitting method.    paintBackingStore(g);  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久一二三区| 国产欧美一区二区三区沐欲| 中国色在线观看另类| 岛国精品在线观看| 国产精品久久福利| 成人一道本在线| 国产精品网站一区| 麻豆精品久久久| 日本一区二区三区四区在线视频| 国产夫妻精品视频| 亚洲妇熟xx妇色黄| 久久久噜噜噜久久人人看 | 97久久超碰精品国产| 国产精品久久久久婷婷二区次| 成人午夜av在线| 午夜精品久久一牛影视| 精品国产网站在线观看| 韩国在线一区二区| 国产精品久久看| 精品精品国产高清一毛片一天堂| 国产一区二区免费视频| 亚洲国产日韩精品| 国产日产欧美一区| 7777精品伊人久久久大香线蕉经典版下载 | 欧美乱熟臀69xxxxxx| 国产精品影视天天线| 欧美高清在线一区二区| 国产在线一区二区综合免费视频| 中文字幕一区二区三区在线观看| 欧美日韩午夜精品| 色偷偷88欧美精品久久久| 国产福利一区二区| 日韩国产在线一| 午夜精品久久久久久不卡8050| 久久精品亚洲麻豆av一区二区| 欧美二区在线观看| 在线一区二区三区四区| 91国偷自产一区二区三区成为亚洲经典 | 欧美人xxxx| 91精品国产综合久久久蜜臀图片 | 色香蕉久久蜜桃| 在线视频一区二区三| 在线观看区一区二| 欧美日韩不卡视频| 久久久久国产精品麻豆ai换脸 | 美女诱惑一区二区| 国产麻豆精品一区二区| 精品写真视频在线观看| 成人精品免费视频| 欧美日韩黄色一区二区| 精品国产91洋老外米糕| 自拍偷拍欧美精品| 日韩成人一级大片| 精品一区二区三区蜜桃| 亚洲高清视频在线| 欧美性生交片4| 首页欧美精品中文字幕| 91精品国产综合久久福利软件| 2021久久国产精品不只是精品| 卡一卡二国产精品 | 国产日韩一级二级三级| 一区二区三区日韩欧美| 另类小说一区二区三区| 91在线精品秘密一区二区| 欧美最新大片在线看| 欧美成人video| 午夜激情一区二区三区| 成人性生交大合| 91精品国产综合久久久久久久| 久久久久高清精品| 日韩激情中文字幕| 91精品91久久久中77777| 久久精品视频在线免费观看| 亚洲欧洲日韩在线| 久久亚洲二区三区| 久久精品国产亚洲一区二区三区| av在线不卡电影| 国产日韩av一区二区| 国产一区二区影院| 久久久久久**毛片大全| 欧美一区二区视频免费观看| 亚洲精品免费看| 亚洲精选在线视频| 蜜乳av一区二区| 成人福利电影精品一区二区在线观看| 91偷拍与自偷拍精品| 国产福利不卡视频| 日韩一区国产二区欧美三区| 欧美变态口味重另类| 夜色激情一区二区| 成+人+亚洲+综合天堂| 国产视频视频一区| 成人免费视频免费观看| 中文字幕精品一区| 一区二区三区小说| 中文字幕日韩一区| 色综合久久久久综合体 | 国产aⅴ综合色| 国产精品女人毛片| 51久久夜色精品国产麻豆| 日一区二区三区| 国产精品丝袜一区| 在线播放欧美女士性生活| 久久99九九99精品| 国产精品水嫩水嫩| 91在线免费播放| 洋洋av久久久久久久一区| 91精品国产综合久久久久久| 成人免费视频caoporn| 亚洲高清一区二区三区| 国产精品系列在线| 欧美一区二区人人喊爽| 成人精品国产一区二区4080| 青草国产精品久久久久久| 亚洲男同性恋视频| 国产亚洲成年网址在线观看| 免费人成精品欧美精品| 欧美精品一区二区三区高清aⅴ | 国产成人亚洲精品青草天美| 亚洲精品高清在线| 中文字幕欧美一区| 精品1区2区3区| 欧美视频中文字幕| 成人黄页毛片网站| 五月天激情综合| 玉足女爽爽91| 日韩av中文字幕一区二区三区| 色婷婷综合久久久久中文一区二区 | 日韩视频永久免费| 日本中文字幕一区二区视频| 日韩激情视频在线观看| 亚洲乱码精品一二三四区日韩在线| 亚洲最色的网站| 久久国产人妖系列| a亚洲天堂av| 欧美亚洲一区三区| 精品999在线播放| 亚洲图片激情小说| 精东粉嫩av免费一区二区三区| 成人免费视频视频| 久久久久久久久一| 一区二区三区在线播放| 狠狠色综合播放一区二区| 7777精品伊人久久久大香线蕉最新版 | 日韩欧美一级二级| 中文字幕国产精品一区二区| 天天av天天翘天天综合网| 美腿丝袜亚洲三区| 色婷婷av一区二区三区之一色屋| 欧美美女直播网站| 91社区在线播放| 亚洲精品国产精品乱码不99| 一本久道久久综合中文字幕| 中文字幕一区二区三区四区 | 欧美日韩一区不卡| 中文字幕视频一区| 欧洲生活片亚洲生活在线观看| 一区二区三区国产精品| 欧美日韩精品欧美日韩精品一| 亚洲欧美国产三级| 欧美性生活久久| 五月婷婷激情综合网| 日韩欧美一级二级三级| 亚洲素人一区二区| 久久嫩草精品久久久精品| 国内成人自拍视频| 香蕉久久夜色精品国产使用方法| 波多野结衣中文字幕一区二区三区| 日本一二三四高清不卡| 色综合久久综合网| 欧美老年两性高潮| 久久久久成人黄色影片| 99在线热播精品免费| 欧美一区三区二区| 一区二区三区自拍| 日韩av网站免费在线| 国产麻豆精品久久一二三| 色视频成人在线观看免| 精品国产制服丝袜高跟| 久久久www成人免费毛片麻豆| 国产欧美一区视频| 另类综合日韩欧美亚洲| 欧美精品一区二区在线播放| 国产一区二区在线电影| 国产原创一区二区三区| 1000精品久久久久久久久| 久久综合久久99| 伊人开心综合网| 国产精品一二三四五| 欧美偷拍一区二区| 日韩一区欧美小说| 久久99精品久久久久久| 欧美视频一区在线| 中文字幕一区二区三区色视频| 国产一区二区三区在线观看精品 | 久久综合给合久久狠狠狠97色69| 自拍偷拍欧美激情| 成人av在线一区二区三区| 久久久久久电影| 国产成人在线网站|