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

📄 metalsliderui.java

📁 Mobile 应用程序使用 Java Micro Edition (Java ME) 平台
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * @(#)MetalSliderUI.java	1.36 05/11/30 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package javax.swing.plaf.metal;import javax.swing.plaf.basic.BasicSliderUI;import java.awt.Component;import java.awt.Container;import java.awt.Graphics;import java.awt.Dimension;import java.awt.Rectangle;import java.awt.Point;import java.awt.Insets;import java.awt.Color;import java.io.Serializable;import java.awt.IllegalComponentStateException;import java.awt.Polygon;import java.beans.*;import javax.swing.border.AbstractBorder;import javax.swing.*;import javax.swing.event.*;import javax.swing.plaf.*;/** * A Java L&F implementation of SliderUI.   * <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.  As of 1.4, support for long term storage * of all JavaBeans<sup><font size="-2">TM</font></sup> * has been added to the <code>java.beans</code> package. * Please see {@link java.beans.XMLEncoder}. * * @version 1.36 11/30/05 * @author Tom Santos */public class MetalSliderUI extends BasicSliderUI {    protected final int TICK_BUFFER = 4;    protected boolean filledSlider = false;    // NOTE: these next three variables are currently unused.    protected static Color thumbColor;    protected static Color highlightColor;    protected static Color darkShadowColor;    protected static int trackWidth;    protected static int tickLength;       /**    * A default horizontal thumb <code>Icon</code>. This field might not be    * used. To change the <code>Icon</code> used by this delgate directly set it    * using the <code>Slider.horizontalThumbIcon</code> UIManager property.    */    protected static Icon horizThumbIcon;       /**    * A default vertical thumb <code>Icon</code>. This field might not be    * used. To change the <code>Icon</code> used by this delgate directly set it    * using the <code>Slider.verticalThumbIcon</code> UIManager property.    */    protected static Icon vertThumbIcon;    private static Icon SAFE_HORIZ_THUMB_ICON;    private static Icon SAFE_VERT_THUMB_ICON;    protected final String SLIDER_FILL = "JSlider.isFilled";    public static ComponentUI createUI(JComponent c)    {        return new MetalSliderUI();    }    public MetalSliderUI() {        super( null );    }    private static Icon getHorizThumbIcon() {        if (System.getSecurityManager() != null) {            return SAFE_HORIZ_THUMB_ICON;        } else {            return horizThumbIcon;        }    }    private static Icon getVertThumbIcon() {        if (System.getSecurityManager() != null) {            return SAFE_VERT_THUMB_ICON;        } else {            return vertThumbIcon;        }    }    public void installUI( JComponent c ) {        trackWidth = ((Integer)UIManager.get( "Slider.trackWidth" )).intValue();        tickLength = ((Integer)UIManager.get( "Slider.majorTickLength" )).intValue();        horizThumbIcon = SAFE_HORIZ_THUMB_ICON =                UIManager.getIcon( "Slider.horizontalThumbIcon" );        vertThumbIcon = SAFE_VERT_THUMB_ICON =                UIManager.getIcon( "Slider.verticalThumbIcon" );	super.installUI( c );        thumbColor = UIManager.getColor("Slider.thumb");        highlightColor = UIManager.getColor("Slider.highlight");        darkShadowColor = UIManager.getColor("Slider.darkShadow");        scrollListener.setScrollByBlock( false );        Object sliderFillProp = c.getClientProperty( SLIDER_FILL );        if ( sliderFillProp != null ) {            filledSlider = ((Boolean)sliderFillProp).booleanValue();        }    }    protected PropertyChangeListener createPropertyChangeListener( JSlider slider ) {        return new MetalPropertyListener();    }    protected class MetalPropertyListener extends BasicSliderUI.PropertyChangeHandler {        public void propertyChange( PropertyChangeEvent e ) {  // listen for slider fill	    super.propertyChange( e );	    String name = e.getPropertyName();	    if ( name.equals( SLIDER_FILL ) ) {	        if ( e.getNewValue() != null ) {		    filledSlider = ((Boolean)e.getNewValue()).booleanValue();		}		else {		    filledSlider = false;		}	    }	}    }    public void paintThumb(Graphics g)  {        Rectangle knobBounds = thumbRect;        g.translate( knobBounds.x, knobBounds.y );        if ( slider.getOrientation() == JSlider.HORIZONTAL ) {            getHorizThumbIcon().paintIcon( slider, g, 0, 0 );        }        else {            getVertThumbIcon().paintIcon( slider, g, 0, 0 );        }        g.translate( -knobBounds.x, -knobBounds.y );    }    /**     * If <code>chooseFirst</code>is true, <code>c1</code> is returned,     * otherwise <code>c2</code>.     */    private Color chooseColor(boolean chooseFirst, Color c1, Color c2) {        if (chooseFirst) {            return c2;        }        return c1;    }    /**     * Returns a rectangle enclosing the track that will be painted.     */    private Rectangle getPaintTrackRect() {        int trackLeft = 0, trackRight = 0, trackTop = 0, trackBottom = 0;        if (slider.getOrientation() == JSlider.HORIZONTAL) {            trackBottom = (trackRect.height - 1) - getThumbOverhang();            trackTop = trackBottom - (getTrackWidth() - 1);            trackRight = trackRect.width - 1;        }        else {	    if (MetalUtils.isLeftToRight(slider)) {	        trackLeft = (trackRect.width - getThumbOverhang()) - 		                                         getTrackWidth();		trackRight = (trackRect.width - getThumbOverhang()) - 1;	    }	    else {	        trackLeft = getThumbOverhang();		trackRight = getThumbOverhang() + getTrackWidth() - 1;	    }            trackBottom = trackRect.height - 1;        }        return new Rectangle(trackRect.x + trackLeft, trackRect.y + trackTop,                             trackRight - trackLeft, trackBottom - trackTop);    }    public void paintTrack(Graphics g)  {        if (MetalLookAndFeel.usingOcean()) {            oceanPaintTrack(g);            return;        }        Color trackColor = !slider.isEnabled() ? MetalLookAndFeel.getControlShadow() :                           slider.getForeground();	boolean leftToRight = MetalUtils.isLeftToRight(slider);        g.translate( trackRect.x, trackRect.y );        int trackLeft = 0;        int trackTop = 0;        int trackRight = 0;        int trackBottom = 0;        // Draw the track	if ( slider.getOrientation() == JSlider.HORIZONTAL ) {            trackBottom = (trackRect.height - 1) - getThumbOverhang();            trackTop = trackBottom - (getTrackWidth() - 1);            trackRight = trackRect.width - 1;	}	else {	    if (leftToRight) {	        trackLeft = (trackRect.width - getThumbOverhang()) - 		                                         getTrackWidth();		trackRight = (trackRect.width - getThumbOverhang()) - 1;	    }	    else {	        trackLeft = getThumbOverhang();		trackRight = getThumbOverhang() + getTrackWidth() - 1;	    }            trackBottom = trackRect.height - 1;	}	if ( slider.isEnabled() ) {	    g.setColor( MetalLookAndFeel.getControlDarkShadow() );	    g.drawRect( trackLeft, trackTop,			(trackRight - trackLeft) - 1, (trackBottom - trackTop) - 1 );	    	    g.setColor( MetalLookAndFeel.getControlHighlight() );	    g.drawLine( trackLeft + 1, trackBottom, trackRight, trackBottom );	    g.drawLine( trackRight, trackTop + 1, trackRight, trackBottom );	    g.setColor( MetalLookAndFeel.getControlShadow() );	    g.drawLine( trackLeft + 1, trackTop + 1, trackRight - 2, trackTop + 1 );	    g.drawLine( trackLeft + 1, trackTop + 1, trackLeft + 1, trackBottom - 2 );	}	else {	    g.setColor( MetalLookAndFeel.getControlShadow() );	    g.drawRect( trackLeft, trackTop,			(trackRight - trackLeft) - 1, (trackBottom - trackTop) - 1 );	}        // Draw the fill	if ( filledSlider ) {	    int middleOfThumb = 0;	    int fillTop = 0;	    int fillLeft = 0;	    int fillBottom = 0;	    int fillRight = 0;	    if ( slider.getOrientation() == JSlider.HORIZONTAL ) {	        middleOfThumb = thumbRect.x + (thumbRect.width / 2);		middleOfThumb -= trackRect.x; // To compensate for the g.translate()		fillTop = !slider.isEnabled() ? trackTop : trackTop + 1;		fillBottom = !slider.isEnabled() ? trackBottom - 1 : trackBottom - 2;				if ( !drawInverted() ) {

⌨️ 快捷键说明

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