我正在浏览 thenewboston 的教程,我遇到了意想不到的错误。我已经尝试过做Eclipse建议的所有事情,但无法弄清楚问题出在哪里。
这是我的Main Class
import javax.swing.JFrame;
class Main {
public static void main(String args[]) {
Gui go = new Gui();
go.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
go.setSize(300,200);
go.setVisible(true);
}
}
这是GUI Class
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
public class Gui extends JFrame {
private JButton reg;
private JButton custom;
public Gui(){
super("The title");
setLayout(new FlowLayout());
reg = new JButton("Regular Button");
add(reg);
Icon b = new ImageIcon(getClass().getResource("b.png"));
Icon a = new ImageIcon(getClass().getResource("a.png"));
custom = new JButton("Custom", b);
custom.setRolloverIcon(a);
add(custom);
HandlerClass handler = new HandlerClass();
reg.addActionListener(handler);
custom.addActionListener(handler);
}
private class HandlerClass implements ActionListener{
public void actionPerformed(ActionEvent event){
JOptionPane.showMessageDialog(null, String.format("%s", event.getActionCommand()));
}
}
}
感谢兄弟帮助我!
答案 0 :(得分:0)
你发布了几个不同的堆栈跟踪,错误在不同的行号上,但代码似乎已经移动了。错误本身是在ImageIcon的构造函数中讨论NullPointerException。与JButton没有任何关系,因此标签具有误导性。
基本上你正在查找b.png和a.png的图像位置。如果这两个文件不存在,那么您将获得一个类似于您的运行时异常。快速解决方法是将这两个图像添加到项目中,以便找到它们。
更强大的解决方案是处理异常并输出更有意义的错误,或者只是在gui上没有图标的情况下继续。