import java.awt.*;
import java.net.*;
import javax.swing.*;public class MyImageIcon extends JFrame {
public MyImageIcon() {
Container container = getContentPane();
// 创建一个标签
JLabel jl = new JLabel("这是一个JFrame窗体", JLabel.CENTER);
// 获取图片所在的URL
URL url = MyImageIcon.class.getResource("imageButton.jpg");
Icon icon = new ImageIcon(url); // 实例化Icon对象
jl.setIcon(icon); // 为标签设置图片
// 设置文字放置在标签中间
jl.setHorizontalAlignment(SwingConstants.CENTER);
jl.setOpaque(true); // 设置标签为不透明状态
container.add(jl); // 将标签添加到容器中
setSize(250, 100); // 设置窗体大小
setVisible(true); // 使窗体可见
// 设置窗体关闭模式
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String args[]) {
new MyImageIcon(); // 实例化MyImageIcon对象
}
}
图片“imageButton.jpg”我已经放在sd文件夹下了,还是报出异常:
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:187)
at sd.MyImageIcon.<init>(MyImageIcon.java:14)
at sd.MyImageIcon.main(MyImageIcon.java:27)
这是怎么回事呢
import java.net.*;
import javax.swing.*;public class MyImageIcon extends JFrame {
public MyImageIcon() {
Container container = getContentPane();
// 创建一个标签
JLabel jl = new JLabel("这是一个JFrame窗体", JLabel.CENTER);
// 获取图片所在的URL
URL url = MyImageIcon.class.getResource("imageButton.jpg");
Icon icon = new ImageIcon(url); // 实例化Icon对象
jl.setIcon(icon); // 为标签设置图片
// 设置文字放置在标签中间
jl.setHorizontalAlignment(SwingConstants.CENTER);
jl.setOpaque(true); // 设置标签为不透明状态
container.add(jl); // 将标签添加到容器中
setSize(250, 100); // 设置窗体大小
setVisible(true); // 使窗体可见
// 设置窗体关闭模式
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String args[]) {
new MyImageIcon(); // 实例化MyImageIcon对象
}
}
图片“imageButton.jpg”我已经放在sd文件夹下了,还是报出异常:
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:187)
at sd.MyImageIcon.<init>(MyImageIcon.java:14)
at sd.MyImageIcon.main(MyImageIcon.java:27)
这是怎么回事呢
需要放到和MyImageIcon.class一个目录
这里使用的是相对路径,就是说图片应该和MyImageIcon类放到同一目录下。
Container container = getContentPane();
// 创建一个标签
JLabel jl = new JLabel("这是一个JFrame窗体", JLabel.CENTER);
// 获取图片所在的URL
Icon icon = new ImageIcon("F:\\Eclipse workspace\\swing\\bin\\sd\\imageButton.jpg"); // 实例化Icon对象
jl.setIcon(icon); // 为标签设置图片
// 设置文字放置在标签中间
jl.setHorizontalAlignment(SwingConstants.CENTER);
jl.setOpaque(true); // 设置标签为不透明状态
container.add(jl); // 将标签添加到容器中
setSize(250, 100); // 设置窗体大小
setVisible(true); // 使窗体可见
// 设置窗体关闭模式
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
谢谢各位的热心,我刚刚把那个图片移了n个位置也没运行成功,不过代码中改一下就出来了,呵呵,我也莫名其妙Icon icon = new ImageIcon("F:\\Eclipse workspace\\swing\\bin\\sd\\imageButton.jpg"); // 实例化Icon对象