Swing中显示图片

固定大小图片显示

javax.swing.ImageIcon imageIconSource = new ImageIcon("cool.jpg");
java.awt.Image image = imageIconSource.getImage();
Image tempImage = image.getScaledInstance(100,100,Image.SCALE_DEFAULT);
ImageIcon imageIcon = new ImageIcon(tempImage);
javax.swing.JLabel photoView = new JLabel();
photoView.setIcon(imageIcon);

========================================================

如何让Swing控件如JLabel,JButton等显示动态Gif图片

通常让这些控件加载图片的代码如下:
JButton addTebBtn = new JButton(new ImageIcon(TabbedPanel.class
    .getResource("/addTab.gif")));

如果要显示动态Gif图片这样做法就不灵了.如果要显示动态Gif图片的话,我们需要从JLabel,JButton等控件继承一个类,并重载其public void paint(Graphics g)方法,然后用一个线程不断去刷新它(用Timer也可以,请参考文章" 封装完毕,能显示当前时间并改变风格的菜单类 ( http://www.blogjava.net/sitinspring/archive/2007/06/08/122753.html )"中Timer 的做法,它有少实现一个Runnable接口的优势),这样gif的动态效果就显示出来了.

标签的完整代码如下,其它控件大家可自行参照实现:

package  com.junglesong.common.component.label;

import  java.awt.Graphics;
import  java.awt.Graphics2D;
import  java.awt.Image;

import  javax.swing.JLabel;

public   class  DynGifLabel  extends  JLabel  implements  Runnable  {
    
private static final long serialVersionUID = 45345345355L;

    
// 用以存储Gif动态图片
    public Image image;

    
// 用以刷新paint函数
    Thread refreshThread;

    
/** *//**
     * 
     * 
@param image:
     *   Sample:new ImageIcon(DynGifLabel.class
     *            .getResource("/picture.gif")).getImage()
     
*/

    
public DynGifLabel(Image image) {
        
this.image = image;
        refreshThread 
= new Thread(this);
        refreshThread.start();
    }


    
/** *//**
     * 重载paint函数
     
*/

    
public void paint(Graphics g) {
        
super.paint(g);
        Graphics2D graph 
= (Graphics2D) g;
        
if (image != null{
            
// 全屏描绘图片
            graph.drawImage(image, 00, getWidth(), getHeight(), 00, image
                    .getWidth(
null), image.getHeight(null), null);
        }

    }


    
/** *//**
     * 隔100毫秒刷新一次
     
*/

    
public void run() {
        
while (true{
            
this.repaint();// 这里调用了Paint
            try {
                Thread.sleep(
100);// 休眠100毫秒
            }
 catch (Exception e) {
                e.printStackTrace();
            }

        }

    }

}


使用过程如下:
DynGifLabel stateLbl  =   new  DynGifLabel( new  ImageIcon(ThreadPanel. class
                .getResource(
" /startThread.gif " )).getImage());

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值