JAVA什么组件能实现像桌面上快a捷图标一样?点哪个哪个变色,请各位高人帮忙!!!!!!!!!!

解决方案 »

  1.   

    好像没有。不过你可以自己做picture
      

  2.   

    参见:
    创建用于翻转效果的 Java2D 合成
    http://www-128.ibm.com/developerworks/cn/java/us-j2d/
      

  3.   

    import java.awt.Composite;
    import java.awt.CompositeContext;
    import java.awt.RenderingHints;
    import java.awt.image.ColorModel;import java.awt.image.*;public class RolloverComposite implements Composite
    {
        public static RolloverComposite DEFAULT = new RolloverComposite();    private RolloverComposite()
        {
        }    public CompositeContext createContext(ColorModel srcColorModel, ColorModel dstColorModel, RenderingHints hints)
        {
            return new CompositeContext()
            {
                public void compose(Raster src, Raster dstIn, WritableRaster dstOut)
                {
                    for (int x = 0; x < dstOut.getWidth(); x++)
                    {
                        for (int y = 0; y < dstOut.getHeight(); y++)
                        {
                            int[] srcPixels = new int[4];
                            src.getPixel(x, y, srcPixels);
                            if (srcPixels[3] != 0)
                            {
                                srcPixels[0] = srcPixels[0] +(255-srcPixels[0])/2;
                                srcPixels[1] = srcPixels[1] +(255-srcPixels[1])/2;
                                srcPixels[2] = srcPixels[2] +(255-srcPixels[2])/2;
                                dstOut.setPixel(x, y, srcPixels);
                            }
                        }
                    }
                }            public void dispose()
                {
                }
            };
        }
    }
    import java.awt.Component;
    import java.awt.Composite;
    import java.awt.Graphics;
    import java.awt.Graphics2D;import javax.swing.Icon;public class RolloverIcon implements Icon
    {
        protected Icon fIcon;    public RolloverIcon(Icon anIcon)
        {
            fIcon = anIcon;
        }    public int getIconHeight()
        {
            return fIcon.getIconHeight();
        }    public int getIconWidth()
        {
            return fIcon.getIconWidth();
        }    public void paintIcon(Component c, Graphics g, int x, int y)
        {
            Graphics2D g2D = (Graphics2D) g;
            Composite oldComposite = g2D.getComposite();
            g2D.setComposite(RolloverComposite.DEFAULT);
            fIcon.paintIcon(c, g, x, y);
            g2D.setComposite(oldComposite);
        }
    }
    //使用的时候这样就好了
    button.setIcon(icon);
    button.setRolloverIcon(new RolloverIcon(icon));
      

  4.   

    用事件:
    做3个bmp图作为按钮背景,各是你想要的nomal状态,drag in 状态,on click状态的效果
    nomal状态作为默认。
    再分别在drag in事件、drag out事件和onclick事件相应代码里把按钮背景换上相应的图片。我以前用过一个模拟桌面系统自定义按钮就是用的相同思路。^_^
      

  5.   

    为什么要用bpm图片作为按钮背景?还有什么办法嘛?