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

📄 defaultdesktopmanager.java

📁 gcc的组建
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
   */  public void deactivateFrame(JInternalFrame frame)  {    JDesktopPane p = frame.getDesktopPane();    if (p != null)      {        if (p.getSelectedFrame() == frame)          p.setSelectedFrame(null);      }    else      {        try          {            frame.setSelected(false);          }        catch (PropertyVetoException e)          {            // Do nothing if attempt is vetoed.          }      }  }  /**   * This method is called to indicate that the DesktopManager should prepare   * to drag the JInternalFrame. Any state information needed to drag the   * frame will be prepared now.   *   * @param component The JComponent to drag, usually a JInternalFrame.   */  public void beginDraggingFrame(JComponent component)  {    if (component instanceof JDesktopIcon)      pane = ((JDesktopIcon) component).getInternalFrame().getDesktopPane();    else      pane = ((JInternalFrame) component).getDesktopPane();    if (pane == null)      return;    dragCache = component.getBounds();    if (! (pane instanceof JDesktopPane))      currentDragMode = JDesktopPane.LIVE_DRAG_MODE;    else      currentDragMode = ((JDesktopPane) pane).getDragMode();  }  /**   * This method is called to drag the JInternalFrame to a new location.   *   * @param component The JComponent to drag, usually a JInternalFrame.   *   * @param newX The new x coordinate.   * @param newY The new y coordinate.   */  public void dragFrame(JComponent component, int newX, int newY)  {    if (currentDragMode == JDesktopPane.OUTLINE_DRAG_MODE)      {        // FIXME: Do outline drag mode painting.      }    else      {        Rectangle b = component.getBounds();        if (component instanceof JDesktopIcon)          component.setBounds(newX, newY, b.width, b.height);        else          setBoundsForFrame((JInternalFrame) component, newX, newY, b.width,                            b.height);      }  }  /**   * This method indicates that the dragging is done. Any state information   * stored by the DesktopManager can be cleared.   *   * @param component The JComponent that has finished dragging.   */  public void endDraggingFrame(JComponent component)  {    if (currentDragMode == JDesktopPane.OUTLINE_DRAG_MODE)      {        setBoundsForFrame((JInternalFrame) component, dragCache.x, dragCache.y,                          dragCache.width, dragCache.height);        pane = null;        dragCache = null;      }    component.repaint();  }  /**   * This method is called to indicate that the given JComponent will be   * resized. Any state information necessary to resize the JComponent will   * be prepared now.   *   * @param component The JComponent to resize, usually a JInternalFrame.   * @param direction The direction to drag in (a SwingConstant).   */  public void beginResizingFrame(JComponent component, int direction)  {    pane = ((JInternalFrame) component).getDesktopPane();    if (pane == null)      return;    dragCache = component.getBounds();    if (! (pane instanceof JDesktopPane))      currentDragMode = JDesktopPane.LIVE_DRAG_MODE;    else      currentDragMode = ((JDesktopPane) pane).getDragMode();  }  /**   * This method resizes the give JComponent.   *   * @param component The JComponent to resize.   * @param newX The new x coordinate.   * @param newY The new y coordinate.   * @param newWidth The new width.   * @param newHeight The new height.   */  public void resizeFrame(JComponent component, int newX, int newY,                          int newWidth, int newHeight)  {    dragCache.setBounds(newX, newY, newWidth, newHeight);    if (currentDragMode == JDesktopPane.OUTLINE_DRAG_MODE)      {        // FIXME: Do outline drag painting.      }    else      setBoundsForFrame(component, dragCache.x, dragCache.y, dragCache.width,                        dragCache.height);  }  /**   * This method is called to indicate that the given JComponent has finished   * dragging. Any state information stored by the DesktopManager can be   * cleared.   *   * @param component The JComponent that finished resizing.   */  public void endResizingFrame(JComponent component)  {    if (currentDragMode == JDesktopPane.OUTLINE_DRAG_MODE)      {        setBoundsForFrame((JInternalFrame) component, dragCache.x, dragCache.y,                          dragCache.width, dragCache.height);        pane = null;        dragCache = null;      }    component.repaint();  }  /**   * This method calls setBounds with the given parameters and repaints the   * JComponent.   *   * @param component The JComponent to set bounds for.   * @param newX The new x coordinate.   * @param newY The new y coordinate.   * @param newWidth The new width.   * @param newHeight The new height.   */  public void setBoundsForFrame(JComponent component, int newX, int newY,                                int newWidth, int newHeight)  {    component.setBounds(newX, newY, newWidth, newHeight);    component.revalidate();    // If not null, I'd rather repaint the parent    if (component.getParent() != null)      component.getParent().repaint();    else      component.repaint();  }  /**   * This is a helper method that removes the JDesktopIcon of the given   * JInternalFrame from the parent.   *   * @param frame The JInternalFrame to remove an icon for.   */  protected void removeIconFor(JInternalFrame frame)  {    JDesktopIcon icon = frame.getDesktopIcon();    Container c = icon.getParent();    if (c != null && icon != null)      c.remove(icon);  }  /**   * This method is called by iconifyFrame to determine the bounds of the   * JDesktopIcon for the given JInternalFrame.   *   * @param frame The JInternalFrame to find the bounds of its JDesktopIcon   *        for.   *   * @return The bounds of the JDesktopIcon.   */  protected Rectangle getBoundsForIconOf(JInternalFrame frame)  {    // IconRects has no order to it.    // The icon _must_ be placed in the first free slot (working from     // the bottom left corner)    // The icon also must not be placed where another icon is placed     // (regardless whether that frame is an icon currently or not)    JDesktopPane desktopPane = frame.getDesktopPane();    if (desktopPane == null)      return frame.getDesktopIcon().getBounds();    Rectangle paneBounds = desktopPane.getBounds();    Insets insets = desktopPane.getInsets();    Dimension pref = frame.getDesktopIcon().getPreferredSize();    Component[] frames = desktopPane.getComponents();    int count = 0;    for (int i = 0, j = 0; i < frames.length; i++)      if (frames[i] instanceof JDesktopIcon          || frames[i] instanceof JInternalFrame          && ((JInternalFrame) frames[i]).getWasIcon() && frames[i] != frame)	count++;    iconRects = new Rectangle[count];    for (int i = 0, j = 0; i < frames.length; i++)      if (frames[i] instanceof JDesktopIcon)        iconRects[--count] = frames[i].getBounds();      else if (frames[i] instanceof JInternalFrame               && ((JInternalFrame) frames[i]).getWasIcon()               && frames[i] != frame)        iconRects[--count] = ((JInternalFrame) frames[i])                                                 .getDesktopIcon().getBounds();    int startingX = insets.left;    int startingY = paneBounds.height - insets.bottom - pref.height;    Rectangle ideal = new Rectangle(startingX, startingY, pref.width,                                    pref.height);    boolean clear = true;    while (iconRects.length > 0)      {        clear = true;        for (int i = 0; i < iconRects.length; i++)          {            if (iconRects[i] != null && iconRects[i].intersects(ideal))              {                clear = false;                break;              }          }        if (clear)          return ideal;        startingX += pref.width;        if (startingX + pref.width > paneBounds.width - insets.right)          {            startingX = insets.left;            startingY -= pref.height;          }        ideal.setBounds(startingX, startingY, pref.width, pref.height);      }    return ideal;  }  /**   * This method sets the bounds of the JInternalFrame right before the   * maximizeFrame call.   *   * @param frame The JInternalFrame being maximized.   * @param rect The normal bounds.   */  protected void setPreviousBounds(JInternalFrame frame, Rectangle rect)  {    frame.setNormalBounds(rect);  }  /**   * This method returns the normal bounds of the JInternalFrame from before   * the maximize call.   *   * @param frame The JInternalFrame that is being restored.   *   * @return The previous bounds of the JInternalFrame.   */  protected Rectangle getPreviousBounds(JInternalFrame frame)  {    return frame.getNormalBounds();  }  /**   * This method sets the value to true if the given JInternalFrame has been   * iconized and the bounds of its DesktopIcon are valid.   *   * @param frame The JInternalFrame for the JDesktopIcon.   * @param value True if the JInternalFrame has been iconized and the bounds   *        of the JDesktopIcon are valid.   */  protected void setWasIcon(JInternalFrame frame, Boolean value)  {    frame.setWasIcon(value.booleanValue(), WAS_ICON_ONCE_PROPERTY);  }  /**   * This method returns true if the given JInternalFrame has been iconized   * and the bounds of its DesktopIcon are valid.   *   * @param frame The JInternalFrame for the JDesktopIcon.   *   * @return True if the given JInternalFrame has been iconized and the bounds   *         of its DesktopIcon are valid.   */  protected boolean wasIcon(JInternalFrame frame)  {    return frame.getWasIcon();  }}

⌨️ 快捷键说明

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