类不能声明类型

时间:2015-02-24 10:21:04

标签: java class jbutton subclass

我正在浏览 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()));
        }
    }

}

感谢兄弟帮助我!

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

你发布了几个不同的堆栈跟踪,错误在不同的行号上,但代码似乎已经移动了。错误本身是在ImageIcon的构造函数中讨论NullPointerException。与JButton没有任何关系,因此标签具有误导性。

基本上你正在查找b.png和a.png的图像位置。如果这两个文件不存在,那么您将获得一个类似于您的运行时异常。快速解决方法是将这两个图像添加到项目中,以便找到它们。

更强大的解决方案是处理异常并输出更有意义的错误,或者只是在gui上没有图标的情况下继续。