windowsscrollbarui.java

来自「JAVA 所有包」· Java 代码 · 共 462 行 · 第 1/2 页

JAVA
462
字号
/* * @(#)WindowsScrollBarUI.java	1.25 06/08/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.java.swing.plaf.windows;import java.awt.*;import java.awt.event.*;import java.awt.image.*;import java.lang.ref.*;import java.util.*;import javax.swing.plaf.basic.*;import javax.swing.*;import javax.swing.plaf.ComponentUI;import static com.sun.java.swing.plaf.windows.TMSchema.*;import static com.sun.java.swing.plaf.windows.XPStyle.Skin;/** * Windows rendition of the component. * <p> * <strong>Warning:</strong> * Serialized objects of this class will not be compatible with * future Swing releases.  The current serialization support is appropriate * for short term storage or RMI between applications running the same * version of Swing.  A future release of Swing will provide support for * long term persistence. */public class WindowsScrollBarUI extends BasicScrollBarUI {    private Grid thumbGrid;    private Grid highlightGrid;    /**     * Creates a UI for a JScrollBar.     *     * @param c the text field     * @return the UI     */    public static ComponentUI createUI(JComponent c) {        return new WindowsScrollBarUI();    }    protected void installDefaults() {	super.installDefaults();	if (XPStyle.getXP() != null) {	    scrollbar.setBorder(null);	}    }    public void uninstallUI(JComponent c) {        super.uninstallUI(c);        thumbGrid = highlightGrid = null;    }    protected void configureScrollBarColors() {        super.configureScrollBarColors();	Color color = UIManager.getColor("ScrollBar.trackForeground");        if (color != null && trackColor != null) {            thumbGrid = Grid.getGrid(color, trackColor);        }	color = UIManager.getColor("ScrollBar.trackHighlightForeground");        if (color != null && trackHighlightColor != null) {            highlightGrid = Grid.getGrid(color, trackHighlightColor);        }    }    protected JButton createDecreaseButton(int orientation)  {        return new WindowsArrowButton(orientation,				    UIManager.getColor("ScrollBar.thumb"),				    UIManager.getColor("ScrollBar.thumbShadow"),				    UIManager.getColor("ScrollBar.thumbDarkShadow"),				    UIManager.getColor("ScrollBar.thumbHighlight"));    }    protected JButton createIncreaseButton(int orientation)  {        return new WindowsArrowButton(orientation,				    UIManager.getColor("ScrollBar.thumb"),				    UIManager.getColor("ScrollBar.thumbShadow"),				    UIManager.getColor("ScrollBar.thumbDarkShadow"),				    UIManager.getColor("ScrollBar.thumbHighlight"));    }    /**      * {@inheritDoc}     * @since 1.6     */    @Override    protected ArrowButtonListener createArrowButtonListener(){        // we need to repaint the entire scrollbar because state change for each        // button causes a state change for the thumb and other button on Vista        if(XPStyle.isVista()) {            return new ArrowButtonListener() {                public void mouseEntered(MouseEvent evt) {                     repaint();                    super.mouseEntered(evt);                }                public void mouseExited(MouseEvent evt) {                     repaint();                    super.mouseExited(evt);                }                private void repaint() {                    scrollbar.repaint();                }            };        } else {            return super.createArrowButtonListener();        }    }    protected void paintTrack(Graphics g, JComponent c, Rectangle trackBounds){	boolean v = (scrollbar.getOrientation() == JScrollBar.VERTICAL);	XPStyle xp = XPStyle.getXP();	if (xp != null) {	    JScrollBar sb = (JScrollBar)c;	    State state = State.NORMAL;	    // Pending: Implement rollover (hot) and pressed	    if (!sb.isEnabled()) {		state = State.DISABLED;	    }	    Part part = v ? Part.SBP_LOWERTRACKVERT : Part.SBP_LOWERTRACKHORZ;	    xp.getSkin(sb, part).paintSkin(g, trackBounds, state);	} else if (thumbGrid == null) {            super.paintTrack(g, c, trackBounds);        }        else {            thumbGrid.paint(g, trackBounds.x, trackBounds.y, trackBounds.width,                            trackBounds.height);            if (trackHighlight == DECREASE_HIGHLIGHT) {                paintDecreaseHighlight(g);            }             else if (trackHighlight == INCREASE_HIGHLIGHT) {                paintIncreaseHighlight(g);            }        }    }    protected void paintThumb(Graphics g, JComponent c, Rectangle thumbBounds) {	boolean v = (scrollbar.getOrientation() == JScrollBar.VERTICAL);	XPStyle xp = XPStyle.getXP();	if (xp != null) {	    JScrollBar sb = (JScrollBar)c;	    State state = State.NORMAL;	    if (!sb.isEnabled()) {		state = State.DISABLED;	    } else if (isDragging) {		state = State.PRESSED;	    } else if (isThumbRollover()) {		state = State.HOT;            } else if (XPStyle.isVista()) {                if ((incrButton != null && incrButton.getModel().isRollover()) ||                    (decrButton != null && decrButton.getModel().isRollover())) {                    state = State.HOVER;                }            }	    // Paint thumb	    Part thumbPart = v ? Part.SBP_THUMBBTNVERT : Part.SBP_THUMBBTNHORZ;	    xp.getSkin(sb, thumbPart).paintSkin(g, thumbBounds, state);	    // Paint gripper	    Part gripperPart = v ? Part.SBP_GRIPPERVERT : Part.SBP_GRIPPERHORZ;	    Skin skin = xp.getSkin(sb, gripperPart);            Insets gripperInsets = xp.getMargin(c, thumbPart, null, Prop.CONTENTMARGINS);            if (gripperInsets == null ||                (v && (thumbBounds.height - gripperInsets.top -                       gripperInsets.bottom >= skin.getHeight())) ||                (!v && (thumbBounds.width - gripperInsets.left -                        gripperInsets.right >= skin.getWidth()))) {                skin.paintSkin(g,                               thumbBounds.x + (thumbBounds.width  - skin.getWidth()) / 2,                               thumbBounds.y + (thumbBounds.height - skin.getHeight()) / 2,                               skin.getWidth(), skin.getHeight(), state);            }	} else {	    super.paintThumb(g, c, thumbBounds);	}    }    protected void paintDecreaseHighlight(Graphics g) {        if (highlightGrid == null) {            super.paintDecreaseHighlight(g);        }        else {            Insets insets = scrollbar.getInsets();            Rectangle thumbR = getThumbBounds();            int x, y, w, h;            if (scrollbar.getOrientation() == JScrollBar.VERTICAL) {                x = insets.left;                y = decrButton.getY() + decrButton.getHeight();                w = scrollbar.getWidth() - (insets.left + insets.right);                h = thumbR.y - y;            }             else {                x = decrButton.getX() + decrButton.getHeight();                y = insets.top;                w = thumbR.x - x;                h = scrollbar.getHeight() - (insets.top + insets.bottom);            }            highlightGrid.paint(g, x, y, w, h);	}    }      	    protected void paintIncreaseHighlight(Graphics g) {        if (highlightGrid == null) {            super.paintDecreaseHighlight(g);        }        else {            Insets insets = scrollbar.getInsets();            Rectangle thumbR = getThumbBounds();            int x, y, w, h;            if (scrollbar.getOrientation() == JScrollBar.VERTICAL) {                x = insets.left;                y = thumbR.y + thumbR.height;                w = scrollbar.getWidth() - (insets.left + insets.right);                h = incrButton.getY() - y;            }            else {                x = thumbR.x + thumbR.width;                y = insets.top;                w = incrButton.getX() - x;                h = scrollbar.getHeight() - (insets.top + insets.bottom);

⌨️ 快捷键说明

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