求高手帮帮忙看一个“Swing的图片不显示”类型的故障原因.

问题描述

高手,我弄了一个Java的类型:高手,我弄了一个Java的类型:高手,我弄了一个Java的类型:importjava.awt.AWTEvent;importjava.awt.Toolkit;importjava.awt.event.AWTEventListener;importjava.awt.event.KeyEvent;importjava.net.URL;importjava.util.HashMap;importjavax.swing.ImageIcon;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;publicclassMyMainFrameextendsBJFrame{publicMyMainFrame(){Toolkittk=Toolkit.getDefaultToolkit();tk.addAWTEventListener(newMyAWTEventListener(),AWTEvent.KEY_EVENT_MASK);setTitle("Java之美");setDefaultCloseOperation(0x3);setSize(220,200);setBack();setVisible(true);}publicvoidsetBack(){HashMap<Integer,JFrame>myframebox=newHashMap<Integer,JFrame>();myframebox.get(0).dispose();((JPanel)this.getContentPane()).setOpaque(false);//Winter.jpg这个图片的位置要跟当前这个类是同一个包下//URLurl=Test.class.getResource("OurSoul.jpg");ImageIconimg=newImageIcon("OurSoul.jpg");JLabelbackground=newJLabel(img);this.getLayeredPane().add(background,newInteger(Integer.MIN_VALUE));background.setBounds(0,0,img.getIconWidth(),img.getIconHeight());}publicstaticvoidmain(String[]args){newMyMainFrameConsole();}}classMyAWTEventListenerimplementsAWTEventListener{privatebooleancontrolPressed=false;privatebooleanshiftPressed=false;privatebooleanaltPressed=false;@OverridepublicvoideventDispatched(AWTEventevent){if(event.getClass()==KeyEvent.class){//被处理的事件是键盘事件.KeyEventkeyEvent=(KeyEvent)event;if(keyEvent.getID()==KeyEvent.KEY_PRESSED){keyPressed(keyEvent);}elseif(keyEvent.getID()==KeyEvent.KEY_RELEASED){keyReleased(keyEvent);}}}privatevoidkeyPressed(KeyEventevent){if(event.getKeyCode()==KeyEvent.VK_CONTROL){controlPressed=true;}elseif(event.getKeyCode()==KeyEvent.VK_ALT){altPressed=true;}elseif(event.getKeyCode()==KeyEvent.VK_SHIFT){shiftPressed=true;}if(controlPressed&&altPressed&&shiftPressed){//当Ctr+C被按下时,进行相应的处理.//newCaptureScreen();}}privatevoidkeyReleased(KeyEventevent){if(event.getKeyCode()==KeyEvent.VK_CONTROL){controlPressed=false;}elseif(event.getKeyCode()==KeyEvent.VK_SHIFT){shiftPressed=false;}elseif(event.getKeyCode()==KeyEvent.VK_SHIFT){altPressed=false;}}}​

上面的代码运行后的结果为:请问高手:我在第31行定义的”OurSoul.jpg“的图片,为什么不会显示在小弟的运行效果里呢?这是小弟原本调试成功的一个类型,现在由于时间紧迫,小弟,请求高手,CSDN的版主,能够帮帮忙,为小弟看一下这个类型中”不显示图片“的运行效果的原因.谢谢高手!!!!

解决方案

解决方案二:
自顶一个!!
解决方案三:
将OurSoul.jpg拷贝一份到这个工程的工程名下面,也就是src的同级目录试试看
解决方案四:
引用

将OurSoul.jpg拷贝一份到这个工程的工程名下面,也就是src的同级目录试试看

敬爱的蜗牛-大哥,谢谢您的第一时间到场!!小弟刚刚测试过了,OurSoul.jpg这个图片文件就是在与上文的“MyMainFrame.java”相同的文件路径之下的.亲眼验证三遍.希望蜗牛-大哥,能够再为小弟细细看看.
解决方案五:
图片要放到.class文件目录下,不是.java目录更大的问题是你的代码不符合我们凡人写代码的习惯
解决方案六:
需要通过repaint()重绘的。
解决方案七:
层次不对,你要么设置为背景,要么放在最顶层,这样才能看到你要的效果
解决方案八:
这样URLurl=getClass().getResource("img");ImageIconicon=newImageIcon(url);或者这样ImageIconicon=newImageIcon("src/包名/img");
解决方案九:
谢谢恩师方老师的落实到代码的点拨!!!!学生生希望方老师指点:为什么这句:ImageIconicon=newImageIcon("src/包名/img");

要把“src\”,这里的项目源码文件夹写到newImageIcon(),这个ImageIcon类型的构造方法的参数列表里?这里的机制,是“填写相对路径地址”,还是“填写绝对路径”地址的写法,能够让小弟把这里的ImageIcon这个,类型的构造方法体中的“图片文件的路径”,参数,给填写上?恩师,这里的代码:ImageIconicon=newImageIcon("src/包名/img");

是以什么方式进行“newImageIcon("src/包名/img");这句代码的构造方法体中的地址填写的方法,是按照什么方法来进行填写的?为什么不写起文件夹”src“所在的上层文件夹的地址?
解决方案十:
引用

这样URLurl=getClass().getResource("img");ImageIconicon=newImageIcon(url);或者这样ImageIconicon=newImageIcon("src/包名/img");

方老师,学生把提问写到了楼上,学生希望方老师,能够为学生做一下学生问题的指导.谢谢方老师!!
解决方案十一:
publicImageIcon(Stringfilename){this(filename,filename);}publicImageIcon(Stringfilename,Stringdescription){image=Toolkit.getDefaultToolkit().getImage(filename);if(image==null){return;}this.filename=filename;this.description=description;loadImage(image);}

源码如上,他不是getclass(相对于当前类所在的路径)这样去获取的,当然要知道绝对路径了。

时间: 2024-12-03 22:58:56

求高手帮帮忙看一个“Swing的图片不显示”类型的故障原因.的相关文章

跪求高手出现-求高手帮帮忙,不知道该怎样解决

问题描述 求高手帮帮忙,不知道该怎样解决 Exception in thread "main" java.lang.StackOverflowError at java.text.DecimalFormat.subformat(DecimalFormat.java:903) at java.text.DecimalFormat.format(DecimalFormat.java:692) at java.text.DecimalFormat.format(DecimalFormat.j

求高手帮帮忙!!

问题描述 高手,我用的是MyEclipse8.6版.现在项目中的现场为:经过初步的互联学习,我得到了初步的解决方法.我下载了他:安装了他.并且照着教程配置了classpath和path目前,小弟的端点一边为:诚求有经验的javax.media包的Java音频代码调试高手,为小弟的这个故障点支招.谢谢敬爱的高手!! 解决方案 解决方案二:哈哈,自顶一个,谢谢敬爱的CSDN的过目!!解决方案三:JMF安装之后,安装文件加下有jar包,其中有sound.jar等几个jar包引入到你的工程里面.解决方案

急急急 求高手帮我调试一个ASP程序 在线等

问题描述 这是一个网上书店系统求ASP高手帮忙万分感谢 解决方案 解决方案二:没东西啊,看什么?解决方案三:你不把东西发出来,怎么看啊???解决方案四:大家留邮箱我给你们发过去我这边现在附件穿不是上去啊

tomcat 发布应用出错 ,求高手帮我看一下

问题描述 同一个应用在windows下的tomcat上发布就可以,换到AIX上的tomcat上就报错了,错误如下:12:31:19.081[ERROR]org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/DMSCS]-4005:Exceptionstartingfilterstrutsjava.lang.ClassCastException:$Proxy3incompatiblewithjava.lang.annotat

跪求 高手 帮帮忙

问题描述 请问这个程序应该怎么改变才可以实现两个数字的转换呢?publicclassTest{publicstaticvoidmain(String[]args){intnum1=2;intnum2=4;System.out.println("Beforeinvokingtheswapmethod,num1is"+num1+""+"num2is"+num2);swap(num1,num2);System.out.print("After

ASP.NET创建SQL表时提示错误,求高手帮帮忙啊

问题描述 stringsql="createtable"+TextBox1.Text+"(菜名varchar(100),价格money)";myuser.getstr(sql);publicvoidgetstr(stringstr){cmd.Connection=getconn();cmd.CommandText=str;cmd.ExecuteNonQuery();//这句提示我语法错误!!!close();} 解决方案 解决方案二:错误提示呢TextBox1.Te

求高手出来帮忙看下问题

问题描述 部分代码:Stringsql="selecta.dm_,a.hyqc_,a.hzr_,a.addr_,1asordfromjy_hydaawherea.dm_in(selectb.t_valueasdm_fromJY_USER_BASETYPEb)unionselecta.dm_,a.hyqc_,a.hzr_,a.addr_,0asordfromjy_hydaaorderbyorddesc";System.out.println(sql);List<Object[]&g

在下初手,求高手帮帮忙!

问题描述 对这句调试不过去````不知道什么原因?objPresSet=objApp.Presentations.Open(strFileName,MsoTriState.msoFalse,MsoTriState.msoTrue,MsoTriState.msoTrue);未处理System.Runtime.InteropServices.COMExceptionMessage="对COM组件的调用返回了错误HRESULTE_FAIL."Source="Microsoft.Of

asp.net使用jquery completed插件输入值不显示问题,求高手帮帮忙,非常急!!!!

问题描述 后台获取到的数据如下图前台js代码如下图 解决方案 解决方案二:直接把Ajax的地址给completed插件,不用在外面套一层