两件事情。
首先,setVisible
在构建框架及其内容之后进行最后一次调用......即
JFrame frame = new JFrame("IMAGE");
frame.setSize(500,500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ImageIcon image = new ImageIcon("image/pic1.jpg");
JLabel label = new JLabel("", image, JLabel.CENTER);
JPanel panel = new JPanel(new BorderLayout());
panel.add( label, BorderLayout.CENTER );
// Make me last
frame.setVisible(true);
二、确保image/pic1.jpg
存在且是image
当前执行上下文下的目录。
如果图像是嵌入式资源(位于 Jar 或您的应用程序中),那么您需要为URL
图像提供 a 而不是将 a视为String
文件名......ImageIcon
String
ImageIcon image = new ImageIcon(PICS.class.getResource("image/pic1.jpg"));
例如。
我鼓励您使用JFrame#pack
over JFrame#setSize
,因为它会将框架调整为您的内容的首选大小......
我还鼓励您花时间阅读Java 编程语言的代码约定,初始线程。
我还鼓励您使用ImageIO,ImageIcon
因为它至少会在Exception
出现问题时抛出
更新,测试图像路径
尝试将此添加到您的PICS
类的构造函数中。这至少会告诉你图像不在哪里......
try {
ImageIO.read(PICS.class.getResource("image/pic1.jpg"));
} catch (IOException ex) {
System.out.println("Not in image/pic1.jpg");
}
try {
ImageIO.read(PICS.class.getResource("/image/pic1.jpg"));
} catch (IOException ex) {
System.out.println("Not in /image/pic1.jpg");
}
try {
ImageIO.read(PICS.class.getResource("resources/image/pic1.jpg"));
} catch (IOException ex) {
System.out.println("Not in resources/image/pic1.jpg");
}
try {
ImageIO.read(PICS.class.getResource("/resources/image/pic1.jpg"));
} catch (IOException ex) {
System.out.println("Not in /resources/image/pic1.jpg");
}