Javax Swing Java by API

import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ImageTest {
  public static void main(String[] args) {
    JPanel panel = new JPanel();
    final ImageButton button = new ImageButton("button.png");
    button.setPressedIcon(new ImageIcon("down.png"));
    button.setRolloverIcon(new ImageIcon("over.png"));
    button.setSelectedIcon(new ImageIcon("sel.png"));
    button.setRolloverSelectedIcon(new ImageIcon("sel-over.png"));
    button.setDisabledIcon(new ImageIcon("disabled.png"));
    button.setDisabledSelectedIcon(new ImageIcon("disabled-selected.png"));
    button.setLocation(60, 74);
    button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button.setSelected(!button.isSelected());
        System.out.println("selecting");
      }
    });
    // button.setSelected(true);
    // button.setDisabled(false);
    panel.add(button);
    JFrame frame = new JFrame();
    frame.getContentPane().add(panel);
    frame.pack();
    frame.setVisible(true);
  }
}
class ImageButton extends JButton {
  public ImageButton(String img) {
    this(new ImageIcon(img));
  }
  public ImageButton(ImageIcon icon) {
    setIcon(icon);
    setMargin(new Insets(0, 0, 0, 0));
    setIconTextGap(0);
    setBorderPainted(false);
    setBorder(null);
    setText(null);
    setSize(icon.getImage().getWidth(null), icon.getImage().getHeight(null));
  }
}