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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? jviewport.java

?? gcc的組建
?? JAVA
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
  }  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);  }}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级电影网站| 欧美大白屁股肥臀xxxxxx| 日韩国产在线一| 久久av老司机精品网站导航| 亚洲卡通欧美制服中文| 亚洲人成精品久久久久久 | 欧美日韩一卡二卡三卡| 欧美激情一区二区三区蜜桃视频| 亚洲欧美另类在线| 美美哒免费高清在线观看视频一区二区| 国产毛片精品视频| 欧美成人精精品一区二区频| 日本午夜精品一区二区三区电影| yourporn久久国产精品| 中文字幕巨乱亚洲| 成人深夜视频在线观看| 国产精品乱码人人做人人爱| 成人免费视频播放| 亚洲欧洲99久久| 91热门视频在线观看| 亚洲蜜臀av乱码久久精品| 色婷婷综合久久久| 一区二区三区美女| 欧美日韩国产小视频| 日日摸夜夜添夜夜添精品视频| 成人性生交大片免费看在线播放 | 欧美人xxxx| 三级久久三级久久| 日韩欧美一区二区免费| 奇米在线7777在线精品| 精品久久久久久久一区二区蜜臀| 一级女性全黄久久生活片免费| 国产xxx精品视频大全| 中文字幕成人在线观看| 成a人片亚洲日本久久| 亚洲视频小说图片| 国产麻豆成人传媒免费观看| 久久精品视频免费| 精品一区二区国语对白| 久久久久久久久一| 成人h动漫精品| 亚洲综合一区二区精品导航| 欧美日韩精品系列| 一区二区三区小说| 91网上在线视频| 亚洲国产精品久久人人爱蜜臀| 91视频com| 日韩专区一卡二卡| 欧美精品一区二区三区很污很色的 | 欧美剧情片在线观看| 欧美aaa在线| 国产欧美日韩亚州综合| 91麻豆国产精品久久| 无码av免费一区二区三区试看 | 国产精品夜夜嗨| 中文字幕一区二区三区在线播放 | 国产成人在线视频播放| 中文字幕中文字幕在线一区 | 色综合久久综合网| 日韩亚洲欧美中文三级| 午夜精品久久久久久久蜜桃app| 欧美性大战久久久久久久| 国产一区二区主播在线| 日本在线不卡视频| 亚洲综合色视频| 午夜精品一区二区三区电影天堂| 日韩电影在线一区二区三区| 日韩成人免费电影| 成人国产精品免费| 欧美一级在线观看| 日韩高清在线不卡| 成人app软件下载大全免费| 色婷婷亚洲一区二区三区| 高清成人在线观看| 欧美在线一二三四区| 精品少妇一区二区三区视频免付费| 欧美激情一区在线观看| 亚洲精品国久久99热| 亚洲欧美一区二区三区久本道91| 一区二区三区日韩在线观看| 91福利视频网站| 五月婷婷激情综合网| 美女网站在线免费欧美精品| 欧美一级高清片| 国产一本一道久久香蕉| 不卡视频免费播放| 国内精品写真在线观看| 青青草97国产精品免费观看| 91在线观看高清| 久久久蜜臀国产一区二区| 日本vs亚洲vs韩国一区三区| 在线观看www91| 亚洲视频在线一区二区| 99久久婷婷国产综合精品| 亚洲成人在线免费| 国产乱子轮精品视频| 亚洲午夜电影在线观看| 久久欧美一区二区| 欧美精品日韩一本| 91小宝寻花一区二区三区| 国产一区二区福利视频| 性做久久久久久久免费看| 国产精品久久毛片a| 欧美精品一区二区三区高清aⅴ| 日本欧美一区二区| 一二三区精品视频| 欧美乱妇一区二区三区不卡视频| 精品一区二区在线播放| 亚洲.国产.中文慕字在线| 国产精品国产自产拍在线| 欧美性高清videossexo| 久久精品国产成人一区二区三区 | 日韩一区二区不卡| 日本道免费精品一区二区三区| 石原莉奈在线亚洲二区| 国产欧美日韩综合| 欧美性受极品xxxx喷水| 久久99热99| 日本成人在线一区| 肉色丝袜一区二区| 日韩一区在线播放| 欧美激情艳妇裸体舞| 26uuu国产电影一区二区| 日韩亚洲欧美成人一区| 欧美日本高清视频在线观看| 国产成人午夜视频| 免费视频最近日韩| 图片区小说区区亚洲影院| 亚洲综合在线观看视频| 亚洲激情自拍视频| 亚洲免费观看高清完整版在线| 精品国产自在久精品国产| 色国产综合视频| 国产一区二区电影| 国产一区二区三区国产| 久久91精品国产91久久小草| 亚洲乱码国产乱码精品精可以看| 2023国产一二三区日本精品2022| 一本色道久久综合亚洲精品按摩| 九九精品视频在线看| 久久精品国产久精国产| 亚洲综合色在线| 亚洲国产另类av| 亚洲伊人伊色伊影伊综合网| 日本一区二区三区四区| 中文字幕第一页久久| 国产精品久久久久久久久搜平片| 日韩女优av电影| 欧美天天综合网| 欧美日韩视频在线观看一区二区三区| 成人精品亚洲人成在线| 成人av午夜影院| 91农村精品一区二区在线| 色婷婷综合五月| 成人精品小蝌蚪| 色婷婷国产精品综合在线观看| 国产成人av影院| 国产成a人亚洲精品| 99久久婷婷国产综合精品电影| 国产老女人精品毛片久久| 国产99精品视频| 91免费版在线| 欧美日韩五月天| 欧美不卡一区二区三区四区| 欧美日韩一区三区| 欧美一区二区三区视频| 欧美精品一区二区三区在线| 日韩一区二区三区电影| 欧美激情综合五月色丁香小说| 欧美成人官网二区| 国产精品久久久久久久久晋中| 久久奇米777| 亚洲人123区| 中文字幕五月欧美| 亚洲电影第三页| 久久99久久久久久久久久久| 国产成人精品网址| 国产盗摄一区二区| 日本高清不卡视频| 欧美一区二区不卡视频| 国产欧美精品一区| 一区二区三区中文字幕精品精品| 成人免费在线播放视频| 亚洲国产精品尤物yw在线观看| 亚洲欧美日韩中文播放| 亚洲人xxxx| 日本va欧美va瓶| 99久久er热在这里只有精品66| 成人高清视频在线观看| 欧美性猛交xxxxxx富婆| 久久久久久**毛片大全| 一区二区三区毛片| 国产乱子轮精品视频| 欧美中文字幕一区| 欧美大片在线观看一区二区| 国产精品成人网| 亚洲欧美另类图片小说| 亚洲在线成人精品| 国产一区在线观看麻豆| 日本高清免费不卡视频|