如何在java程序中使用相对路径而不是绝对路径
我想在按钮中绘制一副图像,自己编制了一个按钮类,按钮类的实现参见http://bbs.bccn.net/thread-285809-1-1,但是在设置图像时遇到了问题,图像文件名只能使用绝对路径,而不能使用相对路径,使用绝对路径的设置代码如下:gc.gridwidth = GridBagConstraints.REMAINDER;
//m_btnOK = new CButton("&OK",true);
AddComponent(m_btnOK,gridbag,gc);
m_btnOK.SetAsDefault(true);
Image image = Toolkit.getDefaultToolkit().getImage("E://My Documents//workspace1//MenuTest//src//MenuTestUI//bitmap1.png");
m_btnOK.SetImage(image);
运行得到的界面如下:
而使用相对路径的代码如下:
gc.gridwidth = GridBagConstraints.REMAINDER;
//m_btnOK = new CButton("&OK",true);
AddComponent(m_btnOK,gridbag,gc);
m_btnOK.SetAsDefault(true);
Image image = Toolkit.getDefaultToolkit().getImage("bitmap1.png");
m_btnOK.SetImage(image);
运行得到的界面如下:
也就是图像根本没有加载,调试察看CButton类对象m_btnOK的成员变量m_image发现除了文件名外,其余都是空的对象,我把图像文件Bitmap1.png在目录E:\My Documents\workspace1\MenuTest\bin和E:\My Documents\workspace1\MenuTest\bin\MenuTestUI以及E:\My Documents\workspace1\MenuTest\src、E:\My Documents\workspace1\MenuTest\src\MenuTestUI各放了一份副本都没用,请各位高手不吝指教。
----------------解决方案--------------------------------------------------------
对于路径的问题 一般都是把所有得到文件放在一个包(即一个文件夹)里 这样要是移动的话 就把那个包一起移动 这样不要用自己电脑上的C:/../..等盘符 就是要把图片和你的文件放在一个文件夹 例如:你的的class文件放在一个名叫net的文件夹下,现在你要在你的程序中添加一张为 myPicture.gif的图片,你就在net文件下下新建一个名为image的文件夹(名字自己随便取)【一般都习惯把图片放在一个统一的目录下】,在把myPicture.gif放在image下,这样你在编写代码的时候就只需写image/myPicture.gif就可以了 这样 你移动的时候只需要把net 这个文件夹移动就是了
----------------解决方案--------------------------------------------------------
不行啊,我的CFileDialog类和CButton类都在menuTestUI包中,我在该文件夹中建立了一个image文件夹,全路径为E:\My Documents\workspace1\MenuTest\bin\menuTestUI\image,按照上述方法,图片还是无法显示,而改成了"E://My Documents//workspace1//MenuTest//bin//menuTestUI//image//bitmap1.png"就显示出来了,这样岂不是编写的程序无法移动了?
----------------解决方案--------------------------------------------------------
回复 楼主 ygp_sfec
我一看到没有按java命名习惯的就看不下去
最不爽的匈牙利命名法
下横线
慢得要死
又难看
[ 本帖最后由 pywepe 于 2009-9-22 17:48 编辑 ]
----------------解决方案--------------------------------------------------------
没办法,C++习惯了^_^
----------------解决方案--------------------------------------------------------