ButtonwithImageIcon.java Source code

Java tutorial

Introduction

Here is the source code for ButtonwithImageIcon.java

Source

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);
    }
}