Java tutorial
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class ButtonwithImageIcon extends JFrame { public static void main(String[] args) { ButtonwithImageIcon that = new ButtonwithImageIcon(); that.setVisible(true); } public ButtonwithImageIcon() { setSize(450, 350); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().add(new ButtonPanel(), BorderLayout.SOUTH); } } class ButtonPanel extends JPanel { public ButtonPanel() { JButton btn = new JButton("Push Me", new BoxIcon(Color.blue, 2)); btn.setRolloverIcon(new BoxIcon(Color.cyan, 3)); btn.setPressedIcon(new BoxIcon(Color.yellow, 4)); btn.setHorizontalTextPosition(JButton.LEFT); btn.setBorder(BorderFactory.createEtchedBorder()); btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Button was pressed."); } }); add(btn); } } class BoxIcon implements Icon { private Color color; private int borderWidth; BoxIcon(Color color, int borderWidth) { this.color = color; this.borderWidth = borderWidth; } public int getIconWidth() { return 20; } public int getIconHeight() { return 20; } public void paintIcon(Component c, Graphics g, int x, int y) { g.setColor(Color.black); g.fillRect(x, y, getIconWidth(), getIconHeight()); g.setColor(color); g.fillRect(x + borderWidth, y + borderWidth, getIconWidth() - 2 * borderWidth, getIconHeight() - 2 * borderWidth); } }