All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jidesoft.swing.ClickThroughStyledLabel Maven / Gradle / Ivy

There is a newer version: 3.6.18
Show newest version
package com.jidesoft.swing;

import javax.swing.*;
import javax.swing.event.MouseInputListener;
import java.awt.*;
import java.awt.event.MouseEvent;

/**
 * ClickThroughStyledLabel is a special ClickThroughStyledLabel that will retarget all mouse events to
 * specified target component.
 * 

* For example, you need to paint some text on a JComponent. Usually you can call Java2D paint text method and paint the * text. However the other way to do it is to add JLabel to JComponent and JLabel will not only paint the text but also * an optional icon which is better. However if you had mouse listener added to JComponent, the mouse listener will not * receive any mouse events when mouse clicks on the JLabel. By using this ClickThroughLabel, mouse event will * be passed to underlying JComponent. *

* Please note, we didn't pass all mouse events. In most cases, MOUSE_EXITED and MOUSE_ENTERED doesn't make sense to * pass through. However there are cases, for example when the JLabel is at the border of JComponent, you may expect * MOUSE_ENTERED event on JComponent but it will not happen. So please be aware of those cases so that you don't depend * on it for important decision in your code. */ public class ClickThroughStyledLabel extends StyledLabel implements MouseInputListener { private Component _target; public ClickThroughStyledLabel() { installListeners(); } public ClickThroughStyledLabel(Icon image) { super(image); installListeners(); } public ClickThroughStyledLabel(Icon image, int horizontalAlignment) { super(image, horizontalAlignment); installListeners(); } public ClickThroughStyledLabel(String text) { super(text); installListeners(); } public ClickThroughStyledLabel(String text, int horizontalAlignment) { super(text, horizontalAlignment); installListeners(); } public ClickThroughStyledLabel(String text, Icon icon, int horizontalAlignment) { super(text, icon, horizontalAlignment); installListeners(); } public Component getTarget() { return _target; } public void setTarget(Component target) { _target = target; } protected void installListeners() { addMouseListener(this); addMouseMotionListener(this); } protected void uninstallListeners() { removeMouseListener(this); removeMouseMotionListener(this); } public void mouseClicked(MouseEvent e) { JideSwingUtilities.retargetMouseEvent(e.getID(), e, getTarget()); } public void mousePressed(MouseEvent e) { JideSwingUtilities.retargetMouseEvent(e.getID(), e, getTarget()); } public void mouseReleased(MouseEvent e) { JideSwingUtilities.retargetMouseEvent(e.getID(), e, getTarget()); } public void mouseEntered(MouseEvent e) { JideSwingUtilities.retargetMouseEvent(e.getID(), e, getTarget()); } public void mouseExited(MouseEvent e) { JideSwingUtilities.retargetMouseEvent(e.getID(), e, getTarget()); } public void mouseDragged(MouseEvent e) { JideSwingUtilities.retargetMouseEvent(e.getID(), e, getTarget()); } public void mouseMoved(MouseEvent e) { JideSwingUtilities.retargetMouseEvent(e.getID(), e, getTarget()); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy