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

📄 basicprogressbarui.java

📁 gcc的组建
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        ret = getPreferredInnerHorizontal();        ret.width = 10;        ret.height += insets.top + insets.bottom;      }    return ret;  }  /**   * This method returns the preferred size of the inner   * rectangle (the bounds without the insets) if the   * progressBar is horizontal.   *   * @return The preferred size of the progressBar minus    *         insets if it's horizontal.   */  protected Dimension getPreferredInnerHorizontal()  {    Font font = progressBar.getFont();    FontMetrics fm = progressBar.getFontMetrics(font);    int stringWidth = 0;    String str = progressBar.getString();    if (str != null)      stringWidth = fm.stringWidth(progressBar.getString());    Insets i = progressBar.getInsets();    int prefWidth = Math.max(200 - i.left - i.right, stringWidth);    int stringHeight = 0;    if (str != null)      stringHeight = fm.getHeight();    int prefHeight = Math.max(16 - i.top - i.bottom, stringHeight);    return new Dimension(prefWidth, prefHeight);  }  /**   * This method returns the preferred size of the inner   * rectangle (the bounds without insets) if the    * progressBar is vertical.   *   * @return The preferred size of the progressBar minus   *         insets if it's vertical.   */  protected Dimension getPreferredInnerVertical()  {    Font font = progressBar.getFont();    FontMetrics fm = progressBar.getFontMetrics(font);    int stringWidth = 0;    String str = progressBar.getString();    if (str != null)      stringWidth = fm.stringWidth(progressBar.getString());    Insets i = progressBar.getInsets();    int prefHeight = Math.max(200 - i.left - i.right, stringWidth);    int stringHeight = 0;    if (str != null)      stringHeight = fm.getHeight();    int prefWidth = Math.max(16 - i.top - i.bottom, stringHeight);    return new Dimension(prefWidth, prefHeight);  }  /**   * This method returns the preferred size of the    * given JComponent. If it returns null, then it   * is up to the LayoutManager to give it a size.   *   * @param c The component to find the preferred size for.   *   * @return The preferred size of the component.   */  public Dimension getPreferredSize(JComponent c)  {    Insets insets = c.getInsets();    Dimension ret;    int orientation = progressBar.getOrientation();    if (orientation == JProgressBar.VERTICAL)      ret = getPreferredInnerVertical();    else      ret = getPreferredInnerHorizontal();    ret.width += insets.left + insets.right;    ret.height += insets.top + insets.bottom;    return ret;  }  /**   * This method returns the Color that the text is shown in when the bar is   * not over the text.   *   * @return The color of the text when the bar is not over it.   */  protected Color getSelectionBackground()  {    return selectionBackground;  }  /**   * This method returns the Color that the text is shown in  when the bar is   * over the text.   *   * @return The color of the text when the bar is over it.   */  protected Color getSelectionForeground()  {    return selectionForeground;  }  /**   * This method returns the point (the top left of the bounding box)   * where the text should be painted.    *   * @param g The Graphics object to measure FontMetrics with.   * @param progressString The string to paint.   * @param x The x coordinate of the overall bounds box.   * @param y The y coordinate of the overall bounds box.   * @param width The width of the overall bounds box.   * @param height The height of the overall bounds box.   *   * @return The top left of the bounding box where text should be painted.   */  protected Point getStringPlacement(Graphics g, String progressString, int x,                                     int y, int width, int height)  {    Rectangle tr = new Rectangle();    Rectangle vr = new Rectangle(x, y, width, height);    Rectangle ir = new Rectangle();    Font f = g.getFont();    FontMetrics fm = g.getFontMetrics(f);    SwingUtilities.layoutCompoundLabel(progressBar, fm, progressString, null,                                       SwingConstants.CENTER,                                       SwingConstants.CENTER,                                       SwingConstants.CENTER,                                       SwingConstants.CENTER, vr, ir, tr, 0);    return new Point(tr.x, tr.y);  }  /**   * This method increments the animation index.   */  protected void incrementAnimationIndex()  {    animationIndex++;    //numFrames is like string length, it should be named numFrames or something    if (animationIndex >= numFrames)      animationIndex = 0;    progressBar.repaint();  }  /**   * This method paints the progressBar. It delegates its responsibilities   * to paintDeterminate and paintIndeterminate.   *   * @param g The Graphics object to paint with.   * @param c The JComponent to paint.   */  public void paint(Graphics g, JComponent c)  {    if (! progressBar.isIndeterminate())      paintDeterminate(g, c);    else      paintIndeterminate(g, c);  }  /**   * This method is called if the painting to be done is    * for a determinate progressBar.   *   * @param g The Graphics object to paint with.   * @param c The JComponent to paint.   */  protected void paintDeterminate(Graphics g, JComponent c)  {    Color saved = g.getColor();    int space = getCellSpacing();    int len = getCellLength();    int max = progressBar.getMaximum();    int min = progressBar.getMinimum();    int value = progressBar.getValue();    Rectangle vr = SwingUtilities.calculateInnerArea(c, new Rectangle());    Rectangle or = progressBar.getBounds();    Insets insets = c.getInsets();    int amountFull = getAmountFull(insets, or.width, or.height);	if (progressBar.getOrientation() == JProgressBar.HORIZONTAL)	  {	    g.setColor(c.getForeground());	    g.fillRect(vr.x, vr.y, amountFull, vr.height);	  }	else	  {	    g.setColor(c.getForeground());	    g.fillRect(vr.x, vr.y + vr.height - amountFull, vr.width, amountFull);	  }    if (progressBar.isStringPainted() && !progressBar.getString().equals(""))      paintString(g, 0, 0, or.width, or.height, amountFull, insets);    g.setColor(saved);  }  /**   * This method is called if the painting to be done is for   * an indeterminate progressBar.   *   * @param g The Graphics object to paint with.   * @param c The JComponent to paint.   */  protected void paintIndeterminate(Graphics g, JComponent c)  {    //need to paint the box at it's current position. no text is painted since    //all we're doing is bouncing back and forth    Color saved = g.getColor();    Insets insets = c.getInsets();    Rectangle or = c.getBounds();    Rectangle vr = new Rectangle();    SwingUtilities.calculateInnerArea(c, vr);    g.setColor(c.getBackground());    g.fillRect(vr.x, vr.y, vr.width, vr.height);    boxRect = getBox(boxRect);    g.setColor(c.getForeground());    g.fillRect(boxRect.x, boxRect.y, boxRect.width, boxRect.height);    if (progressBar.isStringPainted() && !progressBar.getString().equals(""))      paintString(g, 0, 0, or.width, or.height,                  getAmountFull(insets, or.width, or.height), insets);    g.setColor(saved);  }  /**   * This method paints the string for the progressBar.   *   * @param g The Graphics object to paint with.   * @param x The x coordinate of the progressBar.   * @param y The y coordinate of the progressBar.   * @param width The width of the progressBar.   * @param height The height of the progressBar.   * @param amountFull The amount of the progressBar that has its bar filled.   * @param b The insets of the progressBar.   */  protected void paintString(Graphics g, int x, int y, int width, int height,                             int amountFull, Insets b)  {    // FIXME: We do not support vertical text painting because Java2D is needed    // for this.    if (progressBar.getOrientation() == JProgressBar.VERTICAL)      return;    // We want to place in the exact center of the bar.    Point placement = getStringPlacement(g, progressBar.getString(),                                         x + b.left, y + b.top,                                         width - b.left - b.right,                                         height - b.top - b.bottom);    Color savedColor = g.getColor();    Shape savedClip = g.getClip();    FontMetrics fm = g.getFontMetrics(progressBar.getFont());    int full = getAmountFull(b, width, height);    String str = progressBar.getString();    // We draw this string two times with different clips so that the text    // over the filled area is painted with selectionForeground and over    // the clear area with selectionBackground.    g.setColor(getSelectionForeground());    g.setClip(0, 0, full + b.left, height);    g.drawString(str, placement.x, placement.y + fm.getAscent());    g.setColor(getSelectionBackground());    g.setClip(full + b.left, 0, width - full, height);    g.drawString(str, placement.x, placement.y + fm.getAscent());    g.setClip(savedClip);    g.setColor(savedColor);  }  /**   * This method sets the current animation index. If the index   * is greater than the number of frames, it resets to 0.   *   * @param newValue The new animation index.   */  protected void setAnimationIndex(int newValue)  {    animationIndex = (newValue <= numFrames) ? newValue : 0;    progressBar.repaint();  }  /**   * This method sets the cell length.   *   * @param cellLen The cell length.   */  protected void setCellLength(int cellLen)  {    cellLength = cellLen;  }  /**   * This method sets the cell spacing.   *   * @param cellSpace The cell spacing.   */  protected void setCellSpacing(int cellSpace)  {    cellSpacing = cellSpace;  }  /**   * This method starts the animation timer. It is called   * when the propertyChangeListener detects that the progressBar   * has changed to indeterminate mode.   *   * @since 1.4   */  protected void startAnimationTimer()  {    if (animationTimer != null)      animationTimer.start();  }  /**   * This method stops the animation timer. It is called when   * the propertyChangeListener detects that the progressBar   * has changed to determinate mode.   *   * @since 1.4   */  protected void stopAnimationTimer()  {    if (animationTimer != null)      animationTimer.stop();    setAnimationIndex(0);  }  /**   * This method changes the settings for the progressBar to   * the defaults provided by the current Look and Feel.   */  protected void installDefaults()  {    LookAndFeel.installColorsAndFont(progressBar, "ProgressBar.background",                                     "ProgressBar.foreground",                                     "ProgressBar.font");    LookAndFeel.installBorder(progressBar, "ProgressBar.border");    progressBar.setOpaque(true);    selectionForeground = UIManager.getColor("ProgressBar.selectionForeground");    selectionBackground = UIManager.getColor("ProgressBar.selectionBackground");    cellLength = UIManager.getInt("ProgressBar.cellLength");    cellSpacing = UIManager.getInt("ProgressBar.cellSpacing");    int repaintInterval = UIManager.getInt("ProgressBar.repaintInterval");    int cycleTime = UIManager.getInt("ProgressBar.cycleTime");    if (cycleTime % repaintInterval != 0        && (cycleTime / repaintInterval) % 2 != 0)      {	int div = (cycleTime / repaintInterval) + 2;	div /= 2;	div *= 2;	cycleTime = div * repaintInterval;      }    setAnimationIndex(0);    numFrames = cycleTime / repaintInterval;    animationTimer.setDelay(repaintInterval);  }  /**   * The method uninstalls any defaults that were   * set by the current Look and Feel.   */  protected void uninstallDefaults()  {    progressBar.setFont(null);    progressBar.setForeground(null);    progressBar.setBackground(null);    selectionForeground = null;    selectionBackground = null;  }  /**   * This method registers listeners to all the    * components that this UI delegate needs to listen to.   */  protected void installListeners()  {    changeListener = new ChangeHandler();    propertyListener = new PropertyChangeHandler();    animation = new Animator();    progressBar.addChangeListener(changeListener);    progressBar.addPropertyChangeListener(propertyListener);    animationTimer.addActionListener(animation);    ancestorListener = new AncestorHandler();    progressBar.addAncestorListener(ancestorListener);    componentListener = new ComponentHandler();    progressBar.addComponentListener(componentListener);  }  /**   * This method unregisters listeners to all the    * components that were listened to.   */  protected void uninstallListeners()  {    progressBar.removeChangeListener(changeListener);    progressBar.removePropertyChangeListener(propertyListener);    animationTimer.removeActionListener(animation);    changeListener = null;    propertyListener = null;    animation = null;    if (ancestorListener != null)      progressBar.removeAncestorListener(ancestorListener);    ancestorListener = null;    if (componentListener != null)      progressBar.removeComponentListener(componentListener);    componentListener = null;  }  /**   * This method installs the UI for the given JComponent.   * This includes setting up defaults and listeners as   * well as initializing any values or objects that   * the UI may need.   *   * @param c The JComponent that is having this UI installed.   */  public void installUI(JComponent c)  {    super.installUI(c);    if (c instanceof JProgressBar)      {	progressBar = (JProgressBar) c;	animationTimer = new Timer(200, null);	animationTimer.setRepeats(true);	installDefaults();	installListeners();      }    if (progressBar.isIndeterminate())      startAnimationTimer();  }  /**   * This method removes the UI for the given JComponent.   * This includes removing any listeners or defaults   * that the installUI may have set up.   *   * @param c The JComponent that is having this UI uninstalled.   */  public void uninstallUI(JComponent c)  {    super.uninstallUI(c);    uninstallListeners();    uninstallDefaults();    animationTimer = null;    progressBar = null;  }}

⌨️ 快捷键说明

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