注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

千鸟

本blog所有日志均系原创 转载请注明出处

 
 
 

日志

 
 

java半透明按钮,自定义鼠标样式  

2007-04-15 19:03:30|  分类: J2SE |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

java半透明按钮,自定义鼠标样式 - souljava - 千鸟 按下去透明度为0.7

java半透明按钮,自定义鼠标样式 - souljava - 千鸟 正常状态透明度0.9

注意上面的小猪是按钮哦,做出来发现效果还不错,晶莹剔透的小猪.^_^.透明度分别是0.7和0.9.鼠标在按钮上就变成了锤子.要代码的和完整图片包的留下e-mail地址来.

生成半透明按钮,自定义鼠标,带背景图的jpanel都写在方法里,用起来很方便.不多说了,必要的注释写在代码里了.

为什么要用applet了? 觉得实现起来要简单点而已.

/*

author by soulnew@gmail.com

*/

package tryd;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.applet.*;
import javax.swing.*;
import java.applet.*;

public class MyCursor extends JApplet implements ActionListener{

 
 JButton b;
 Image img;
    MediaTracker mt;
     int w;
     int h;
      Icon  iiBackground;
     int iiBHeight,iiBWidth;
    
   
 
 public void init(){

   Container c=getContentPane();
   c.setLayout(new BorderLayout());
  iiBackground=UIManager.getIcon("OptionPane.errorIcon");
    iiBWidth=iiBackground.getIconWidth();
    System.out.print("ini\t\n"+iiBWidth);
    iiBHeight=iiBackground.getIconHeight();
    System.out.print("ini\t\n"+iiBWidth);
  try{
   
         b=createButton("dfd","我是按钮");//new Button();
         b.addActionListener(this);
        JPanel jp=createJPanel();//new JPanel();

         jp.add(b);
         c.add(jp);
    
     }catch(Exception e){
      e.printStackTrace();
     }  

    }

    public void paint(Graphics g){

     super.paint(g);
    }
    public void actionPerformed(ActionEvent e){
     System.out.print("act\n");
    }
    public JButton createButton(String name, String toolTip) {

        String imagePath="PIG2.GIF";
       
        JButton button = new JButton();     
        button.paintComponents(button.getGraphics());
      
       try{
           
   img=getImage(getDocumentBase(),imagePath); //applet 调用本地文件
   mt=new MediaTracker(this);
            mt.addImage(img,0);
         mt.waitForAll();   //等待加载完成
    w=img.getWidth(this);
          h=img.getHeight(this);
         
       Cursor cu=  createCursor();  //该按钮使用定制的鼠标
         
    
        GraphicsConfiguration gc = new JFrame().getGraphicsConfiguration(); // 本地图形设备
       
       Image image = gc.createCompatibleImage(w,h,Transparency.TRANSLUCENT);//建立透明画布
      Graphics2D g=(Graphics2D)image.getGraphics();
 
      
       Composite alpha = AlphaComposite.getInstance(
            AlphaComposite.SRC_OVER, .6f);  //指定透明度为半透明
       g.setComposite(alpha);
       g.drawImage(img,0,0,this);  //注意是,将image画到g

    g.dispose();  //腾出内存
    Composite alpha2 = AlphaComposite.getInstance(
            AlphaComposite.SRC_OVER, .9f); 
    Image image1 =gc.createCompatibleImage(w,h,Transparency.TRANSLUCENT);
       g=(Graphics2D)image1.getGraphics();      
       g.setComposite(alpha2);
    g.drawImage(img,2,2,this);  //改变图像起始位置,产生唯一效果
    g.dispose();
   

        button.setIgnoreRepaint(true);
        button.setFocusable(false);
        button.setToolTipText(toolTip);  //按钮的提示说明
        button.setBorder(null);
        button.setContentAreaFilled(false);
        button.setCursor(cu);
        button.setIcon(new ImageIcon(image1));  //把刚才生成的半透明image变成ImageIcon,贴到按钮上去
        button.setRolloverIcon(new ImageIcon(image1));
        button.setPressedIcon(new ImageIcon(image));//按下去的图标

       }catch(Exception e){
        e.printStackTrace();
       }

        return button;
      
    }

     public JPanel createJPanel(){

       JPanel  pan   =   new   JPanel(){
            public void paintComponent(Graphics g)
            {
               Dimension dim = getSize();
                int x, y;
                if( isOpaque() ) { super.paintComponent( g ); }

                 for( y = 0; y < dim.height; y += iiBHeight )
                 {
                   for( x = 0; x < dim.width; x += iiBWidth )
                   {        
                  iiBackground.paintIcon( this, g, x, y );
                   }
                 }
                 System.out.print("JPanel paint\n");
               }
        };

     return pan;
    }
    public Cursor createCursor(){
     
       Image MyCursor1 = getImage(getDocumentBase(),"Images/hammer1.gif");
             try{
             mt=new MediaTracker(this);
                    mt.addImage(img,0);
                 mt.waitForAll();
           return Toolkit.getDefaultToolkit().createCustomCursor(MyCursor1,new Point(0,0),"invisi");
 
         }catch(Exception e){
         }
         return null;
    }
}
 
 


 

  评论这张
 
阅读(2373)| 评论(6)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017