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 Guiii extends JFrame{
  private JButton menu;
  private JButton custom;
  public Guiii(){
    super ("The Title");
    setLayout(new FlowLayout());
    menu = new JButton("menu Button");
    add (menu);
    Icon b = new ImageIcon (getClass().getResource("button.png"));
    Icon x = new ImageIcon (getClass().getResource("greenbutton.png"));
    custom = new JButton("Custom",b);
    custom.setRolloverIcon(x);
    add (custom);
    HandlerClass handler = new HandlerClass();
    menu.addActionListener(handler);
    custom.addActionListener(handler);
  }
  private class HandlerClass implements ActionListener{
    public void actionPerformed(ActionEvent event){
      JOptionPane.showMessageDialog(null, String.format("~s",     event.getActionCommand()));
    }   
  }
}
This is my code I am having some trouble and its not working, I have made a main for it but errors are showing can anyone help me and explain how the code will work khg
These are the errors
Exception in thread "main" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(ImageIcon.java:205)
    at Guiii.<init>(Guiii.java:22)
    at main.main(main.java:7)
This is the rest of the code but it had to be in another file:
import javax.swing.JFrame;
public class main {
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    Guiii o = new Guiii();
    o.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    o.setSize(300,200);
    o.setVisible(true);
  }
}
 
    