java swing中按钮、菜单项等的图标对应的图片应放在什么位置 我把图片放在了源文件的目录下,可是显示不出来,应放哪儿呢?我把源文件放在了一个包里 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可利用swt中的一个获取图片的类SwingResourceManager 来解决, import java.awt.Image; import java.awt.Toolkit; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Iterator; import javax.swing.ImageIcon; public class SwingResourceManager { private static HashMap <String, Image> m_ClassImageMap = new HashMap <String, Image>(); private static Image getImage(InputStream is) { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte buf[] = new byte[1024 * 4]; while (true) { int n = is.read(buf); if (n == -1) break; baos.write(buf, 0, n); } baos.close(); return Toolkit.getDefaultToolkit().createImage(baos.toByteArray()); } catch (Throwable e) { return null; } } public static Image getImage(Class clazz, String path) { String key = clazz.getName() + ' ¦' + path; Image image = m_ClassImageMap.get(key); if (image == null) { if ((path.length() > 0) && (path.charAt(0) == '/')) { String newPath = path.substring(1, path.length()); image = getImage(new BufferedInputStream(clazz.getClassLoader().getResourceAsStream(newPath))); } else { image = getImage(clazz.getResourceAsStream(path)); } m_ClassImageMap.put(key, image); } return image; } public static Image getImage(String path) { return getImage("default", path); //$NON-NLS-1$ } public static Image getImage(String section, String path) { String key = section + ' ¦' + SwingResourceManager.class.getName() + ' ¦' + path; Image image = m_ClassImageMap.get(key); if (image == null) { try { FileInputStream fis = new FileInputStream(path); image = getImage(fis); m_ClassImageMap.put(key, image); fis.close(); } catch (IOException e) { return null; } } return image; } public static void clearImages(String section) { for (Iterator I = m_ClassImageMap.keySet().iterator(); I.hasNext();) { String key = (String) I.next(); if (!key.startsWith(section + ' ¦')) continue; Image image = m_ClassImageMap.get(key); image.flush(); I.remove(); } } public static ImageIcon getIcon(Class clazz, String path) { return getIcon(getImage(clazz, path)); } public static ImageIcon getIcon(String path) { return getIcon("default", path); //$NON-NLS-1$ } public static ImageIcon getIcon(String section, String path) { return getIcon(getImage(section, path)); } public static ImageIcon getIcon(Image image) { if (image == null) return null; return new ImageIcon(image); } } 将该类放在你的项目中,使用方法 lable对象.setIcon(SwingResourceManager.getIcon(label所在类的类名.class, "图片所在相对与类路径")); 如你的图片icon.jpg在与你程序根目录namespace在同一根目录下的image文件夹中,则路径应写为/image/icon.jpg label所在类的类名.class?我这样写了,好像还不行耶。 你可以在项目文件夹下建个images文件夹,里面可以放图片,不过你加载的时候要这样写:./images/2.jpg 方法如下:Icon icon = new ImageIcon("./images/2.jpg");JLabel label = new JLabel(icon);// 将图片添加到JLabel标签上 放在包中可以的啊比如你的图片放在src中的com/swoky/icons文件夹下面,把IconFactory也放在这个目录下package com.swoky.icons;import javax.swing.ImageIcon;public class IconFactory { private final static String PACKAGE = "com/swoky/icons/"; //传入图片名称:xxx.gif public static ImageIcon getImageIcon(String name) { try { return new ImageIcon(ClassLoader.getSystemResource(PACKAGE.concat(name))); } catch (Exception e) { } }} 一个JAVA中很基础的问题!!!!! Eclipse插件的问题 JScrollPane 滚动条 Resultset如何知道当前Table中选定的是哪一条记录?看到Resultset是用next()遍历所有记录的! 怎么在指定文件目录下获得指定文件??? 高手,小妹初学java,给我推荐一本比较好的教材吧! 如何在XP下安装使用J2SDK 对象的消亡? 求大神帮帮忙看看这个程序到底什么问题 当鼠标置于按钮上时如何改变鼠标形状,比如由常规形状变为hand形状? Ext封装问题,顺便给上增删改查的js代码,是用dwr做的 JTable中如何让一行的颜色变化
import java.awt.Image;
import java.awt.Toolkit;
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import javax.swing.ImageIcon; public class SwingResourceManager { private static HashMap <String, Image> m_ClassImageMap = new HashMap <String, Image>(); private static Image getImage(InputStream is) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte buf[] = new byte[1024 * 4];
while (true) {
int n = is.read(buf);
if (n == -1)
break;
baos.write(buf, 0, n);
}
baos.close();
return Toolkit.getDefaultToolkit().createImage(baos.toByteArray());
} catch (Throwable e) {
return null;
}
} public static Image getImage(Class clazz, String path) {
String key = clazz.getName() + ' ¦' + path;
Image image = m_ClassImageMap.get(key);
if (image == null) {
if ((path.length() > 0) && (path.charAt(0) == '/')) {
String newPath = path.substring(1, path.length());
image = getImage(new BufferedInputStream(clazz.getClassLoader().getResourceAsStream(newPath)));
} else {
image = getImage(clazz.getResourceAsStream(path));
}
m_ClassImageMap.put(key, image);
}
return image;
}
public static Image getImage(String path) {
return getImage("default", path); //$NON-NLS-1$
}
public static Image getImage(String section, String path) {
String key = section + ' ¦' + SwingResourceManager.class.getName() + ' ¦' + path;
Image image = m_ClassImageMap.get(key);
if (image == null) {
try {
FileInputStream fis = new FileInputStream(path);
image = getImage(fis);
m_ClassImageMap.put(key, image);
fis.close();
} catch (IOException e) {
return null;
}
}
return image;
} public static void clearImages(String section) {
for (Iterator I = m_ClassImageMap.keySet().iterator(); I.hasNext();) {
String key = (String) I.next();
if (!key.startsWith(section + ' ¦'))
continue;
Image image = m_ClassImageMap.get(key);
image.flush();
I.remove();
}
}
public static ImageIcon getIcon(Class clazz, String path) {
return getIcon(getImage(clazz, path));
}
public static ImageIcon getIcon(String path) {
return getIcon("default", path); //$NON-NLS-1$
} public static ImageIcon getIcon(String section, String path) {
return getIcon(getImage(section, path));
}
public static ImageIcon getIcon(Image image) {
if (image == null)
return null;
return new ImageIcon(image);
}
} 将该类放在你的项目中,使用方法
lable对象.setIcon(SwingResourceManager.getIcon(label所在类的类名.class,
"图片所在相对与类路径"));
如你的图片icon.jpg在与你程序根目录namespace在同一根目录下的image文件夹中,则路径应写为/image/icon.jpg
Icon icon = new ImageIcon("./images/2.jpg");
JLabel label = new JLabel(icon);// 将图片添加到JLabel标签上
比如你的图片放在src中的com/swoky/icons文件夹下面,
把IconFactory也放在这个目录下
package com.swoky.icons;import javax.swing.ImageIcon;public class IconFactory { private final static String PACKAGE = "com/swoky/icons/"; //传入图片名称:xxx.gif
public static ImageIcon getImageIcon(String name) {
try {
return new ImageIcon(ClassLoader.getSystemResource(PACKAGE.concat(name)));
} catch (Exception e) {
}
}
}