scrollpanelayout.java

来自「Mac OS X 10.4.9 for x86 Source Code gcc」· Java 代码 · 共 476 行 · 第 1/2 页

JAVA
476
字号
            Insets viewportInsets = null;            if (viewportBorder != null)              {                viewportInsets = viewportBorder.getBorderInsets(parent);                if (viewportInsets != null)                  viewportInsetsSize.setSize(viewportInsets.left + viewportInsets.right,                                             viewportInsets.top + viewportInsets.bottom);              }            if (insets != null)              insetsSize.setSize(insets.left + insets.right,                                 insets.top + insets.bottom);            if (viewport != null)              {                Component view = null;                Scrollable scr = null;                Dimension pref = null;                                view = viewport.getView();                if (view != null && view instanceof Scrollable)                  scr = (Scrollable) view;                if (scr != null)                  pref = scr.getPreferredScrollableViewportSize();                if (pref == null)                  pref = viewport.getPreferredSize();                if (pref != null)                  viewportSize.setSize(pref);              }                                   maybeSetPreferredSize(colHead, columnHeaderSize);            maybeSetPreferredSize(rowHead, rowHeaderSize);            maybeSetPreferredSize(vsb, verticalScrollBarSize);            maybeSetPreferredSize(hsb, horizontalScrollBarSize);            return new Dimension(insetsSize.width                                  + viewportSize.width                                 + viewportInsetsSize.width                                 + rowHeaderSize.width                                 + verticalScrollBarSize.width,                                 insetsSize.height                                 + viewportSize.height                                 + viewportInsetsSize.height                                 + columnHeaderSize.height                                 + horizontalScrollBarSize.height);          }      }    else      {        return new Dimension(0,0);      }  }  public Dimension minimumLayoutSize(Container parent)  {    if (parent instanceof JScrollPane)      {        JScrollPane sc = (JScrollPane) parent;        synchronized (sc.getTreeLock ())          {            Dimension insetsSize = new Dimension(0,0);             Dimension viewportSize = new Dimension(0,0);             Dimension viewportInsetsSize = new Dimension(0,0);             Dimension columnHeaderSize = new Dimension(0,0);             Dimension rowHeaderSize = new Dimension(0,0);             Dimension verticalScrollBarSize = new Dimension(0,0);             Dimension horizontalScrollBarSize = new Dimension(0,0);             Insets insets = sc.getInsets();            Border viewportBorder = sc.getViewportBorder();            Insets viewportInsets = null;            if (viewportBorder != null)              {                viewportInsets = viewportBorder.getBorderInsets(parent);                if (viewportInsets != null)                  viewportInsetsSize.setSize(viewportInsets.left + viewportInsets.right,                                             viewportInsets.top + viewportInsets.bottom);              }                        if (insets != null)              insetsSize.setSize(insets.left + insets.right,                                 insets.top + insets.bottom);            maybeSetMinimumSize(colHead, columnHeaderSize);            maybeSetMinimumSize(rowHead, rowHeaderSize);                        if (vsbPolicy != VERTICAL_SCROLLBAR_NEVER)              maybeSetMinimumSize(vsb, verticalScrollBarSize);            if (hsbPolicy != HORIZONTAL_SCROLLBAR_NEVER)              maybeSetMinimumSize(hsb, horizontalScrollBarSize);                        return new Dimension(insetsSize.width                                  + viewportSize.width                                 + viewportInsetsSize.width                                 + rowHeaderSize.width                                 + verticalScrollBarSize.width,                                 insetsSize.height                                 + viewportSize.height                                 + viewportInsetsSize.height                                 + columnHeaderSize.height                                 + horizontalScrollBarSize.height);          }      }    else      {        return new Dimension(0,0);      }  }  /**   *   *     +----+--------------------+----+ y1   *     | c1 |   column header    | c2 |   *     +----+--------------------+----+ y2   *     | r  |                    | v  |   *     | o  |                    |    |   *     | w  |                    | s  |   *     |    |                    | r  |   *     | h  |                    | o  |   *     | e  |      viewport      | l  |   *     | a  |                    | l  |   *     | d  |                    | b  |   *     | e  |                    | a  |   *     | r  |                    | r  |   *     +----+--------------------+----+ y3   *     | c3 |    h scrollbar     | c4 |   *     +----+--------------------+----+ y4   *    x1   x2                   x3   x4   *      */  public void layoutContainer(Container parent)  {    if (parent instanceof JScrollPane)      {        JScrollPane sc = (JScrollPane) parent;        synchronized (sc.getTreeLock ())          {            JViewport viewport = sc.getViewport();            Dimension viewSize = viewport.getViewSize();             Point viewPos = viewport.getViewPosition();             int x1 = 0, x2 = 0, x3 = 0, x4 = 0;            int y1 = 0, y2 = 0, y3 = 0, y4 = 0;            Rectangle scrollPaneBounds = SwingUtilities.calculateInnerArea(sc, null);            x1 = scrollPaneBounds.x;            y1 = scrollPaneBounds.y;            x4 = scrollPaneBounds.x + scrollPaneBounds.width;            y4 = scrollPaneBounds.y + scrollPaneBounds.height;                        if (colHead != null)              y2 = y1 + colHead.getPreferredSize().height;            else              y2 = y1;            if (rowHead != null)              x2 = x1 + rowHead.getPreferredSize().width;            else              x2 = x1;            int vsbPolicy = sc.getVerticalScrollBarPolicy();            int hsbPolicy = sc.getHorizontalScrollBarPolicy();            x3 = x4 - vsb.getPreferredSize().width;            y3 = y4 - hsb.getPreferredSize().height;            boolean showVsb =               (vsb != null)              && ((vsbPolicy == VERTICAL_SCROLLBAR_ALWAYS)                  || (vsbPolicy == VERTICAL_SCROLLBAR_AS_NEEDED                       && viewSize.height > (y3 - y2)));            boolean showHsb =               (hsb != null)              && ((hsbPolicy == HORIZONTAL_SCROLLBAR_ALWAYS)                  || (hsbPolicy == HORIZONTAL_SCROLLBAR_AS_NEEDED                       && viewSize.width > (x3 - x2)));                        if (!showVsb)              x3 = x4;                        if (!showHsb)              y3 = y4;            // now set the layout            if (viewport != null)              viewport.setBounds(new Rectangle(x2, y2, x3-x2, y3-y2));            if (colHead != null)              colHead.setBounds(new Rectangle(x2, y1, x3-x2, y2-y1));            if (rowHead != null)              rowHead.setBounds(new Rectangle(x1, y2, x2-x1, y3-y2));            if (showVsb)              {                vsb.setVisible(true);                vsb.setBounds(new Rectangle(x3, y2, x4-x3, y3-y2));              }            else if (vsb != null)              vsb.setVisible(false);            if (showHsb)              {                hsb.setVisible(true);                hsb.setBounds(new Rectangle(x2, y3, x3-x2, y4-y3));              }            else if (hsb != null)              hsb.setVisible(false);            if (upperLeft != null)              upperLeft.setBounds(new Rectangle(x1, y1, x2-x1, y2-y1));            if (upperRight != null)              upperRight.setBounds(new Rectangle(x3, y1, x4-x3, y2-y1));            if (lowerLeft != null)              lowerLeft.setBounds(new Rectangle(x1, y3, x2-x1, y4-y3));            if (lowerRight != null)              lowerRight.setBounds(new Rectangle(x3, y3, x4-x3, y4-y3));          }      }  }  public Rectangle getViewportBorderBounds(JScrollPane scrollPane) {    return null;  }}

⌨️ 快捷键说明

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