Mega Code Archive

 
Categories / Java Tutorial / Swing
 

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