Java图标文件未显示图像

时间:2011-10-14 12:48:23

标签: java swing jframe

我正在使用Imagebox JFrame添加图片,我想在运行时更改图片,所以我添加了以下代码,但没有显示任何内容。

 javax.swing.JFileChooser filechooser = new javax.swing.JFileChooser();
        filechooser.showDialog(this,"ok");
        File f =  filechooser.getSelectedFile();
        txt_Image.setText(f.getName());        
        FileName = f.getPath()+f.getName();
        Image im= Toolkit.getDefaultToolkit().createImage(FileName);
        ImageIcon receivedIcon =null;
        receivedIcon.setImage(im);
        imagebox1.setimageFile(receivedIcon);

图片框代码在

下面
public class imagebox extends JPanel {
    public void setimageFile(Icon icon) {
       imageFile=icon;
    }
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        if (imageFile != null) {            
            Image imageF=  ((ImageIcon)imageFile).getImage();
           g.drawImage(imageF, 0, 0, getWidth(), getHeight(), this);
        } else {
            g.drawLine(0, 0, getWidth(), getHeight());
            g.drawLine(0, getHeight(), getWidth(), 0);
        }
    }
    private Icon imageFile = null;

所以为什么没有错误显示,但我无法在我的图像框中获得任何图像

2 个答案:

答案 0 :(得分:2)

如果您只显示Images,那么最好直接使用Icon/ImageIcon,(以避免Casting或其他)将此图标放到JLabel而不是到JPanel

如果您想在运行时更改Icon,那么您的代码将是

myLabel.setIcon(myIcon);
revalidate();
repaint(); 

此代码必须在EDT上完成,否则你必须将a.m.代码行包装到invokeLater()

答案 1 :(得分:2)

ImageIcon receivedIcon = null;
receivedIcon.setImage(im);

更改为

ImageIcon receivedIcon = new ImageIcon();
receivedIcon.setImage(im);