📄 metaliconfactory.java
字号:
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 ); } else { g.drawLine(4, 7, 7, 7); g.drawLine(4, 8, 7, 8); } } else { g.drawLine( xoff + 7, 12, xoff + 7, 15 ); g.drawLine( xoff + 8, 12, xoff + 8, 15 ); // g.setColor( c.getBackground() ); // g.drawLine( xoff + 7, 16, xoff + 8, 16 ); } // Draw Fill g.setColor( MetalLookAndFeel.getPrimaryControlDarkShadow() ); g.drawLine( xoff + 5, 6, xoff + 5, 9 ); // left shadow g.drawLine( xoff + 6, 5, xoff + 9, 5 ); // top shadow g.setColor( MetalLookAndFeel.getPrimaryControlShadow() ); g.drawLine( xoff + 6, 6, xoff + 6, 6 ); // top left fill g.drawLine( xoff + 9, 6, xoff + 9, 6 ); // top right fill g.drawLine( xoff + 6, 9, xoff + 6, 9 ); // bottom left fill g.drawLine( xoff + 10, 6, xoff + 10, 9 ); // right fill g.drawLine( xoff + 6, 10, xoff + 9, 10 ); // bottom fill g.setColor( MetalLookAndFeel.getPrimaryControl() ); g.drawLine( xoff + 6, 7, xoff + 6, 8 ); // left highlight g.drawLine( xoff + 7, 6, xoff + 8, 6 ); // top highlight g.drawLine( xoff + 9, 7, xoff + 9, 7 ); // right highlight g.drawLine( xoff + 7, 9, xoff + 7, 9 ); // bottom highlight g.setColor( MetalLookAndFeel.getPrimaryControlHighlight() ); g.drawLine( xoff + 8, 9, xoff + 9, 9 ); g.drawLine( xoff + 9, 8, xoff + 9, 8 ); } public int getIconWidth() { return treeControlSize.width; } public int getIconHeight() { return treeControlSize.height; } } // // Menu Icons // static private final Dimension menuArrowIconSize = new Dimension( 4, 8 ); static private final Dimension menuCheckIconSize = new Dimension( 10, 10 ); static private final int xOff = 4; private static class MenuArrowIcon implements Icon, UIResource, Serializable { public void paintIcon( Component c, Graphics g, int x, int y ) { JMenuItem b = (JMenuItem) c; ButtonModel model = b.getModel(); g.translate( x, y ); if ( !model.isEnabled() ) { g.setColor( MetalLookAndFeel.getMenuDisabledForeground() ); } else { if ( model.isArmed() || ( c instanceof JMenu && model.isSelected() ) ) { g.setColor( MetalLookAndFeel.getMenuSelectedForeground() ); } else { g.setColor( b.getForeground() ); } } if( MetalUtils.isLeftToRight(b) ) { g.drawLine( 0, 0, 0, 7 ); g.drawLine( 1, 1, 1, 6 ); g.drawLine( 2, 2, 2, 5 ); g.drawLine( 3, 3, 3, 4 ); } else { g.drawLine( 4, 0, 4, 7 ); g.drawLine( 3, 1, 3, 6 ); g.drawLine( 2, 2, 2, 5 ); g.drawLine( 1, 3, 1, 4 ); } g.translate( -x, -y ); } public int getIconWidth() { return menuArrowIconSize.width; } public int getIconHeight() { return menuArrowIconSize.height; } } // End class MenuArrowIcon private static class MenuItemArrowIcon implements Icon, UIResource, Serializable { public void paintIcon( Component c, Graphics g, int x, int y ) { } public int getIconWidth() { return menuArrowIconSize.width; } public int getIconHeight() { return menuArrowIconSize.height; } } // End class MenuItemArrowIcon private static class CheckBoxMenuItemIcon implements Icon, UIResource, Serializable { public void paintOceanIcon(Component c, Graphics g, int x, int y) { ButtonModel model = ((JMenuItem)c).getModel(); boolean isSelected = model.isSelected(); boolean isEnabled = model.isEnabled(); boolean isPressed = model.isPressed(); boolean isArmed = model.isArmed(); g.translate(x, y); if (isEnabled) { MetalUtils.drawGradient(c, g, "CheckBoxMenuItem.gradient", 1, 1, 7, 7, true); if (isPressed || isArmed) { g.setColor(MetalLookAndFeel.getControlInfo()); g.drawLine( 0, 0, 8, 0 ); g.drawLine( 0, 0, 0, 8 ); g.drawLine( 8, 2, 8, 8 ); g.drawLine( 2, 8, 8, 8 ); g.setColor(MetalLookAndFeel.getPrimaryControl()); g.drawLine( 9, 1, 9, 9 ); g.drawLine( 1, 9, 9, 9 ); } else { g.setColor(MetalLookAndFeel.getControlDarkShadow()); g.drawLine( 0, 0, 8, 0 ); g.drawLine( 0, 0, 0, 8 ); g.drawLine( 8, 2, 8, 8 ); g.drawLine( 2, 8, 8, 8 ); g.setColor(MetalLookAndFeel.getControlHighlight()); g.drawLine( 9, 1, 9, 9 ); g.drawLine( 1, 9, 9, 9 ); } } else { g.setColor(MetalLookAndFeel.getMenuDisabledForeground()); g.drawRect( 0, 0, 8, 8 ); } if (isSelected) { if (isEnabled) { if (isArmed || ( c instanceof JMenu && isSelected)) { g.setColor( MetalLookAndFeel.getMenuSelectedForeground() ); } else { g.setColor(MetalLookAndFeel.getControlInfo()); } } else { g.setColor( MetalLookAndFeel.getMenuDisabledForeground()); } g.drawLine( 2, 2, 2, 6 ); g.drawLine( 3, 2, 3, 6 ); g.drawLine( 4, 4, 8, 0 ); g.drawLine( 4, 5, 9, 0 ); } g.translate( -x, -y ); } public void paintIcon( Component c, Graphics g, int x, int y ) { if (MetalLookAndFeel.usingOcean()) { paintOceanIcon(c, g, x, y); return; } JMenuItem b = (JMenuItem) c; ButtonModel model = b.getModel(); boolean isSelected = model.isSelected(); boolean isEnabled = model.isEnabled(); boolean isPressed = model.isPressed(); boolean isArmed = model.isArmed(); g.translate( x, y ); if ( isEnabled ) { if ( isPressed || isArmed )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -