Java 此代码不起作用的原因:jLabel setIcon?

Java 此代码不起作用的原因:jLabel setIcon?,java,swing,jlabel,imageicon,Java,Swing,Jlabel,Imageicon,我试图为jLabel对象设置图标,但它不起作用。如果.getClass.getResourcepath不同于null,我使用一种返回ImageIcon对象的方法,如果资源为null,则会显示一条消息,说明找不到该资源:文件的路径,但文件在那里!!!。如果我没有选择一个文件,那么默认的图像图标就会被应用,这样就不会出现问题。我不知道为什么这不起作用 private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {

我试图为jLabel对象设置图标,但它不起作用。如果.getClass.getResourcepath不同于null,我使用一种返回ImageIcon对象的方法,如果资源为null,则会显示一条消息,说明找不到该资源:文件的路径,但文件在那里!!!。如果我没有选择一个文件,那么默认的图像图标就会被应用,这样就不会出现问题。我不知道为什么这不起作用

 private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try {
        JFrame upFile = new JFrame();
        File fichero = new File("");
        File x = new File("");
        CopyFile copy= new CopyFile();
        JFileChooser upfile = new JFileChooser(fichero.getCanonicalPath());
        int op = upfile.showOpenDialog(upFile);
                if (op == JFileChooser.APPROVE_OPTION) {
                    fichero = upfile.getSelectedFile();
                    File destino = new File(x.getCanonicalPath()+"\\src\\img\\libros_fotos\\"+fichero.getName());
                    copy.copyFile(fichero, destino);
                    SetLibro("/img/libros_fotos/"+destino.getName());
                    jLabel47.setIcon(createImageIcon(GetLibro()));
                    // commented out as suggested
                    //this.revalidate();
                    //this.repaint();
                }
                else {SetLibro("/img/blank.jpg");
                      jLabel47.setIcon(createImageIcon(GetLibro()));
                    // commented out as suggested
                    //this.revalidate();
                    //this.repaint();                            }
    } catch (IOException ex) {
        System.err.println(ex.getMessage());
    }
} 
尝试添加

this.revalidate();  
this.repaint();  

添加图标后

什么是createImageIconGetLibro是否返回图标?是,我返回一个ImageIcon对象或null.private ImageIcon createImageIconString路径{java.net.URL imgURL=getClass.getResourcepath;如果imgURL!=null{return new ImageIconimgURL;}否则{System.err.printlnFile未找到:+path;返回null;}}它返回null或Imageicon对象。是否也在else中重新绘制?如果否,也将其放在if和else语句中,但仍然不起作用。我的意思是,当我选中:if op==JFileChooser.APPROVE_选项时,如果为真,Imageicon对象就是我选择的图片,如果为假,默认情况下选择Imageicon对象:else{SetLibro/img/blank.jpg;jLabel47.setIconcreateImageIconGetLibro;}。我按照你的建议,在if语句中的SetIconcreateImageIconGetLibro后面放上this.repaint。但它在我第一次运行项目时起作用,但现在不再起作用了。@mKorbel:你的意思是:getIconImage.flush;?因为它不起作用。@MaximShoustin this.revalidate;和this.repaint;。仍然不起作用。@Eddy发布你的所有代码,我是c蚂蚁从中检测问题snippets@Eddy:请编辑您的问题,使其包含显示您所描述问题的答案。单击左侧的,您可以接受此答案。