每当我尝试添加此图像时,我得到的是一个空白的jFrame。我希望有人可以告诉我我做错了什么。此外,我在图像上完成了一个system.out.println,它正在加载。
BufferedImage myPicture = ImageIO.read(getClass().getResourceAsStream("image.jpg"));
javax.swing.JLabel jLabel2 = new JLabel(new ImageIcon(myPicture));
jLabel1.add(jLabel2);
jLabel1.repaint();
答案 0 :(得分:4)
public class LabelJarSample {
public static void main(String args[]) {
String title = "JLabel Sample";
JFrame frame = new JFrame(title);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container content = frame.getContentPane();
content.setLayout(new GridLayout(2, 2));
JLabel label1 = new JLabel("Text Label");
content.add(label1);
Image warnImage = ImageLoader.getImage(LabelJarSample.class, "Warn.gif");
Icon warnIcon = new ImageIcon(warnImage);
JLabel label2 = new JLabel(warnIcon);
content.add(label2);
JLabel label3 = new JLabel("Warning", warnIcon, JLabel.CENTER);
content.add(label3);
String htmlLabel = "<html><sup>HTML</sup> <sub><em>Label</em></sub><br>"
+ "<font color=\"#FF0080\"><u>Multi-line</u></font>";
JLabel label4 = new JLabel(htmlLabel);
content.add(label4);
frame.setSize(300, 200);
frame.setVisible(true);
}
}
final class ImageLoader {
private ImageLoader() {
}
public static Image getImage(Class relativeClass, String filename) {
Image returnValue = null;
InputStream is = relativeClass.getResourceAsStream(filename);
if (is != null) {
BufferedInputStream bis = new BufferedInputStream(is);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
int ch;
while ((ch = bis.read()) != -1) {
baos.write(ch);
}
returnValue = Toolkit.getDefaultToolkit().createImage(
baos.toByteArray());
} catch (IOException exception) {
System.err.println("Error loading: " + filename);
}
}
return returnValue;
}
}
REF:HTTP://www.java2s.com/Code/Java/Swing-JFC/LabelwithImage.htm
注意:还要检查图像位置路径是否正确