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

📄 metaliconfactory.java

📁 java jdk 1.4的源码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
	    g.drawLine(4,6, 4,6);	    //     middle disk	    g.drawLine(2,7, 3,7);	    g.drawLine(2,8, 3,8);	    g.drawLine(4,9, 4,9);	    //     bottom disk	    g.drawLine(2,10, 3,10);	    g.drawLine(2,11, 3,11);	    g.drawLine(4,12, 4,12);	    g.translate(-x, -y);	}		public int getIconWidth() {	    return 16;	}		public int getIconHeight() {	    return 16;	}    }  // End class TreeHardDriveIcon    // Tree FloppyDrive Icon code    private static class TreeFloppyDriveIcon implements Icon, UIResource, Serializable {        public void paintIcon(Component c, Graphics g, int x, int y) {	    g.translate(x, y);	    // Fill body of floppy	    g.setColor(MetalLookAndFeel.getPrimaryControl());	    g.fillRect(2,2, 12,12);	    // Draw outside edge of floppy	    g.setColor(MetalLookAndFeel.getPrimaryControlInfo());	    g.drawLine( 1, 1, 13, 1); // top	    g.drawLine(14, 2, 14,14); // right	    g.drawLine( 1,14, 14,14); // bottom	    g.drawLine( 1, 1,  1,14); // left	    // Draw grey-ish highlights	    g.setColor(MetalLookAndFeel.getControlDarkShadow());	    g.fillRect(5,2, 6,5); // metal disk protector part	    g.drawLine(4,8, 11,8); // top of label	    g.drawLine(3,9, 3,13); // left of label	    g.drawLine(12,9, 12,13); // right of label	    // Draw label and exposed disk	    g.setColor(MetalLookAndFeel.getPrimaryControlHighlight());	    g.fillRect(8,3, 2,3); // exposed disk	    g.fillRect(4,9, 8,5); // label	    // Draw text on label	    g.setColor(MetalLookAndFeel.getPrimaryControlShadow());	    g.drawLine(5,10, 9,10);	    g.drawLine(5,12, 8,12);	    g.translate(-x, -y);	}		public int getIconWidth() {	    return 16;	}		public int getIconHeight() {	    return 16;	}    }  // End class TreeFloppyDriveIcon    static private final Dimension folderIcon16Size = new Dimension( 16, 16 );    /**     * Utility class for caching icon images.  This is necessary because     * we need a new image whenever we are rendering into a new      * GraphicsConfiguration, but we do not want to keep recreating icon      * images for GC's that we have already seen (for example,      * dragging a window back and forth between monitors on a multimon      * system, or drawing an icon to different Components that have different     * GC's).     * So now whenever we create a new icon image for a given GC, we     * cache that image with the GC for later retrieval.     */    static class ImageCacher {	Vector images = new Vector(1, 1);	ImageGcPair currentImageGcPair;	class ImageGcPair {	    Image image;	    GraphicsConfiguration gc;	    ImageGcPair(Image image, GraphicsConfiguration gc) {		this.image = image;		this.gc = gc;	    }	    boolean hasSameConfiguration(GraphicsConfiguration newGC) {		if (((newGC != null) && (newGC.equals(gc))) ||		    ((newGC == null) && (gc == null))) 		{		    return true;		}		return false;	    }	}	Image getImage(GraphicsConfiguration newGC) {	    if ((currentImageGcPair == null) ||		!(currentImageGcPair.hasSameConfiguration(newGC)))	    {		Enumeration elements = images.elements();		while (elements.hasMoreElements()) {		    ImageGcPair imgGcPair = (ImageGcPair)elements.nextElement();		    if (imgGcPair.hasSameConfiguration(newGC)) {			currentImageGcPair = imgGcPair;			return imgGcPair.image;		    }		}		return null;	    }	    return currentImageGcPair.image;	}	void cacheImage(Image image, GraphicsConfiguration gc) {	    ImageGcPair imgGcPair = new ImageGcPair(image, gc);	    images.addElement(imgGcPair);	    currentImageGcPair = imgGcPair;	}    }    /**     * <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}.     */    public static class FolderIcon16 implements Icon, Serializable {	ImageCacher imageCacher;	public void paintIcon(Component c, Graphics g, int x, int y) {	    GraphicsConfiguration gc = c.getGraphicsConfiguration();	    if (imageCacher == null) {		imageCacher = new ImageCacher();	    }	    Image image = imageCacher.getImage(gc);	    if (image == null) {		if (gc != null) {		    image = gc.createCompatibleImage(getIconWidth(), 						     getIconHeight(),						     Transparency.BITMASK);		} else {		    image = new BufferedImage(getIconWidth(),					      getIconHeight(),					      BufferedImage.TYPE_INT_ARGB);		}                Graphics imageG = image.getGraphics();				paintMe(c,imageG);		imageG.dispose();		imageCacher.cacheImage(image, gc);	    }            g.drawImage(image, x, y+getShift(), null);	}	private void paintMe(Component c, Graphics g) {	    int right = folderIcon16Size.width - 1;	    int bottom = folderIcon16Size.height - 1;	    // Draw tab top	    g.setColor( MetalLookAndFeel.getPrimaryControlDarkShadow() );	    g.drawLine( right - 5, 3, right, 3 );	    g.drawLine( right - 6, 4, right, 4 );	    // Draw folder front	    g.setColor( MetalLookAndFeel.getPrimaryControl() );	    g.fillRect( 2, 7, 13, 8 );	    // Draw tab bottom	    g.setColor( MetalLookAndFeel.getPrimaryControlShadow() );	    g.drawLine( right - 6, 5, right - 1, 5 );	    // Draw outline	    g.setColor( MetalLookAndFeel.getPrimaryControlInfo() );	    g.drawLine( 0, 6, 0, bottom );            // left side	    g.drawLine( 1, 5, right - 7, 5 );         // first part of top	    g.drawLine( right - 6, 6, right - 1, 6 ); // second part of top	    g.drawLine( right, 5, right, bottom );    // right side	    g.drawLine( 0, bottom, right, bottom );   // bottom	    // Draw highlight	    g.setColor( MetalLookAndFeel.getPrimaryControlHighlight() );	    g.drawLine( 1, 6, 1, bottom - 1 );	    g.drawLine( 1, 6, right - 7, 6 );	    g.drawLine( right - 6, 7, right - 1, 7 );	}        public int getShift() { return 0; }        public int getAdditionalHeight() { return 0; }	public int getIconWidth() { return folderIcon16Size.width; }	public int getIconHeight() { return folderIcon16Size.height + getAdditionalHeight(); }    }      /**     * <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}.     */    public static class TreeFolderIcon extends FolderIcon16 {        public int getShift() { return -1; }        public int getAdditionalHeight() { return 2; }    }    static private final Dimension fileIcon16Size = new Dimension( 16, 16 );    /**     * <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}.     */    public static class FileIcon16 implements Icon, Serializable {	ImageCacher imageCacher;	public void paintIcon(Component c, Graphics g, int x, int y) {	    GraphicsConfiguration gc = c.getGraphicsConfiguration();	    if (imageCacher == null) {		imageCacher = new ImageCacher();	    }	    Image image = imageCacher.getImage(gc);	    if (image == null) {		if (gc != null) {		    image = gc.createCompatibleImage(getIconWidth(), 						     getIconHeight(),						     Transparency.BITMASK);		} else {		    image = new BufferedImage(getIconWidth(),					      getIconHeight(),					      BufferedImage.TYPE_INT_ARGB);		}                Graphics imageG = image.getGraphics();				paintMe(c,imageG);		imageG.dispose();		imageCacher.cacheImage(image, gc);	    }            g.drawImage(image, x, y+getShift(), null);	}        private void paintMe(Component c, Graphics g) {		int right = fileIcon16Size.width - 1;		int bottom = fileIcon16Size.height - 1;		// Draw fill		g.setColor( MetalLookAndFeel.getWindowBackground() );		g.fillRect( 4, 2, 9, 12 );		// Draw frame		g.setColor( MetalLookAndFeel.getPrimaryControlInfo() );		g.drawLine( 2, 0, 2, bottom );                 // left		g.drawLine( 2, 0, right - 4, 0 );              // top		g.drawLine( 2, bottom, right - 1, bottom );    // bottom		g.drawLine( right - 1, 6, right - 1, bottom ); // right		g.drawLine( right - 6, 2, right - 2, 6 );      // slant 1		g.drawLine( right - 5, 1, right - 4, 1 );      // part of slant 2		g.drawLine( right - 3, 2, right - 3, 3 );      // part of slant 2		g.drawLine( right - 2, 4, right - 2, 5 );      // part of slant 2		// Draw highlight		g.setColor( MetalLookAndFeel.getPrimaryControl() );		g.drawLine( 3, 1, 3, bottom - 1 );                  // left		g.drawLine( 3, 1, right - 6, 1 );                   // top		g.drawLine( right - 2, 7, right - 2, bottom - 1 );  // right		g.drawLine( right - 5, 2, right - 3, 4 );           // slant		g.drawLine( 3, bottom - 1, right - 2, bottom - 1 ); // bottom	}        public int getShift() { return 0; }        public int getAdditionalHeight() { return 0; }	public int getIconWidth() { return fileIcon16Size.width; }	public int getIconHeight() { return fileIcon16Size.height + getAdditionalHeight(); }    }    public static class TreeLeafIcon extends FileIcon16 {        public int getShift() { return 2; }        public int getAdditionalHeight() { return 4; }    }    static private final Dimension treeControlSize = new Dimension( 18, 18 );    /**     * <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}.     */    public static class TreeControlIcon implements Icon, Serializable {        // This data member should not have been exposed.  It's called        // isLight, but now it really means isCollapsed.  Since we can't change        // any APIs... that's life.        protected boolean isLight;        public TreeControlIcon( boolean isCollapsed ) {	    isLight = isCollapsed;	}	ImageCacher imageCacher;        transient boolean cachedOrientation = true;	public void paintIcon(Component c, Graphics g, int x, int y) {	    GraphicsConfiguration gc = c.getGraphicsConfiguration();	    if (imageCacher == null) {		imageCacher = new ImageCacher();	    }	    Image image = imageCacher.getImage(gc);	    if (image == null || cachedOrientation != MetalUtils.isLeftToRight(c)) {		cachedOrientation = MetalUtils.isLeftToRight(c);		if (gc != null) {		    image = gc.createCompatibleImage(getIconWidth(), 						     getIconHeight(),						     Transparency.BITMASK);		} else {		    image = new BufferedImage(getIconWidth(),					      getIconHeight(),					      BufferedImage.TYPE_INT_ARGB);		}                Graphics imageG = image.getGraphics();				paintMe(c,imageG,x,y);		imageG.dispose();		imageCacher.cacheImage(image, gc);			    }	    if (MetalUtils.isLeftToRight(c)) {	        if (isLight) {    // isCollapsed		    g.drawImage(image, x+5, y+3, x+18, y+13, 				       4,3, 17, 13, null);		}	        else {		    g.drawImage(image, x+5, y+3, x+18, y+17, 				       4,3, 17, 17, null);		}	    }	    else {	        if (isLight) {    // isCollapsed		    g.drawImage(image, x+3, y+3, x+16, y+13, 				       4, 3, 17, 13, null);		}		else {		    g.drawImage(image, x+3, y+3, x+16, y+17, 				       4, 3, 17, 17, null);		}	    }	}	public void paintMe(Component c, Graphics g, int x, int y) {	    g.setColor( MetalLookAndFeel.getPrimaryControlInfo() );	    int xoff = (MetalUtils.isLeftToRight(c)) ? 0 : 4;	    // Draw circle	    g.drawLine( xoff + 4, 6, xoff + 4, 9 );     // left	    g.drawLine( xoff + 5, 5, xoff + 5, 5 );     // top left dot	    g.drawLine( xoff + 6, 4, xoff + 9, 4 );     // top	    g.drawLine( xoff + 10, 5, xoff + 10, 5 );   // top right dot	    g.drawLine( xoff + 11, 6, xoff + 11, 9 );   // right	    g.drawLine( xoff + 10, 10, xoff + 10, 10 ); // botom right dot	    g.drawLine( xoff + 6, 11, xoff + 9, 11 );   // bottom	    g.drawLine( xoff + 5, 10, xoff + 5, 10 );   // bottom left dot	    // Draw Center Dot	    g.drawLine( xoff + 7, 7, xoff + 8, 7 );	    g.drawLine( xoff + 7, 8, xoff + 8, 8 );	    // Draw Handle	    if ( isLight ) {    // isCollapsed	        if( MetalUtils.isLeftToRight(c) ) {	            g.drawLine( 12, 7, 15, 7 );		    g.drawLine( 12, 8, 15, 8 );		    //	g.setColor( c.getBackground() );		    //	g.drawLine( 16, 7, 16, 8 );

⌨️ 快捷键说明

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