package com.jsonde.gui.components; import javax.swing.*; import javax.swing.border.Border; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; public class JActionIcon extends JLabel implements MouseListener { private Border emptyBorder = BorderFactory.createEmptyBorder(2, 2, 2, 2); private Action action; public JActionIcon(Action action) { super(); Object smallIconObject = action.getValue(Action.SMALL_ICON); if (null != smallIconObject) { setIcon((Icon) smallIconObject); } this.action = action; setBorder(emptyBorder); addMouseListener(this); } public void mouseEntered(MouseEvent e) { setBorder(BorderFactory.createRaisedBevelBorder()); } public void mouseExited(MouseEvent e) { setBorder(emptyBorder); } public void mousePressed(MouseEvent e) { setBorder(BorderFactory.createLoweredBevelBorder()); } public void mouseReleased(MouseEvent e) { setBorder(emptyBorder); Component component = e.getComponent(); if (component.contains(e.getPoint())) { ActionEvent event = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, "iconClicked"); action.actionPerformed(event); } } public void mouseClicked(MouseEvent e) { } }