Button with user-draw Image icon : JButton « Swing « Java Tutorial

Button with user-draw Image icon
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();

  public ButtonwithImageIcon() {
    setSize(450, 350);


    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.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        System.out.println("Button was pressed.");

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.fillRect(x, y, getIconWidth(), getIconHeight());
    g.fillRect(x + borderWidth, y + borderWidth, getIconWidth() - 2 * borderWidth,
        getIconHeight() - 2 * borderWidth);

14.5.1.Creating a JButton
14.5.2.Creating a JButton from an Action objectCreating a JButton from an Action object
14.5.3.Using MnemonicsUsing Mnemonics
14.5.4.Displaying Mnemonics in Button textDisplaying Mnemonics in Button text
14.5.5.Adding Icon to JButtonAdding Icon to JButton
14.5.6.Adding a Rollover and Pressed Icon to a JButton Component
14.5.7.Adding a Disabled Icon to a JButton Component
14.5.8.Set pressed icon
14.5.9.Setting the Gap Size Between the Label and Icon in a JButton Component
14.5.10.Change button Horizontal Text Position
14.5.11.Set Rollover Icon and set Rollover Enabled
14.5.12.Button with user-draw Image iconButton with user-draw Image icon
14.5.13.Button icons, a default button, HTML in a button,and button mnemonics.
14.5.14.Placing Text and Icon togetherPlacing Text and Icon together
14.5.15.Displaying HTML on JButtonDisplaying HTML on JButton
14.5.16.Creating a Multiline Label for a JButton Component
14.5.17.Lines are left justified. This label text will center the lines
14.5.18.Label text italicizes the second line
14.5.19.Register two event listeners to JButtonRegister two event listeners to JButton
14.5.20.Setting the default buttonSetting the default button
14.5.21.Set tooltip for buttonSet tooltip for button
14.5.22.Call button doClick method to simulate a click action
14.5.23.Dynamically update the appearance of a component
14.5.24.Customizing a JButton Look and Feel
14.5.25.Buttons used in toolbars.
14.5.26.Transfer focus from button to button with help of arrows keys.
14.5.27.Arrow Button