2 sjj ricky Sjj_ricky 于 2015.07.18 08:40 提问

java--label.setIcon 第二次使用后无法显示

利用label显示点击按钮以后产生的二维码,但是只能显示第一次点击后的二维码,再次点击数字或字母按钮,二维码图片产生在文件夹但label里显示的图片还是第一次点击后产生的

界面是这个样子:
二维码显示的label定义为picture
图片说明

每个按钮的事件是这个样子:

 btnZ.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
               String frameno = text_frameno.getText();
                frameno += "Z";
                chkFrameno(frameno);
            }
        });

chkFrameno()里判断长度规则之后会进入drawBar()产生二维码:

 //产生二维码
    private void drawBar(String frameno) {          
        TwoDimensionCode handler = new TwoDimensionCode();
        handler.encoderQRCode(frameno, "./images/bar1.png", "png",2);
        ResizeImg.resize("./images/bar1.png", "bar1601.png", 160, 160);//图片缩放
        picture.setIcon(new ImageIcon(".\\images\\bar1601.png"));       
    }

请教一下这是什么问题?

3个回答

tongyi55555
tongyi55555   2015.07.18 12:32

既然第一次能产生,检查下第二次输出的图片是否存放到了指定的位置,是否在images下。

Sjj_ricky
Sjj_ricky picture.setIcon(new ImageIcon(".\\images\\bar1601.png")); 我是通过这个方式把图片显示在label里面,但是第一次按钮之后不论按什么label里都不再变化,但文件夹里的bar1601.png 的二维码已经产生变化
2 年多之前 回复
licuifeng
licuifeng   2015.07.20 20:17

是否因为缓存? 可以这样:picture.setIcon(new ImageIcon(".\images\bar1601.png?t=new Date().getTime()"))

licuifeng
licuifeng 回复Sjj_ricky: new ImageIcon(".\\images\\bar1601.png") 这个对象第二次有指向吗?
2 年多之前 回复
Sjj_ricky
Sjj_ricky 这样会导致图片也显示不出来
2 年多之前 回复
Sjj_ricky
Sjj_ricky   2015.07.23 14:57

Image img = Toolkit.getDefaultToolkit().createImage(".\images\bar1601.png");
picture.setIcon(new ImageIcon(img));

后来用这样的方法创建image成功了,谢谢楼上

Csdn user default icon
上传中...
上传图片
插入图片