Java 此代码不起作用的原因:jLabel setIcon?
我试图为jLabel对象设置图标,但它不起作用。如果.getClass.getResourcepath不同于null,我使用一种返回ImageIcon对象的方法,如果资源为null,则会显示一条消息,说明找不到该资源:文件的路径,但文件在那里!!!。如果我没有选择一个文件,那么默认的图像图标就会被应用,这样就不会出现问题。我不知道为什么这不起作用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) {
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:请编辑您的问题,使其包含显示您所描述问题的答案。单击左侧的,您可以接受此答案。