com.jidesoft.swing.ClickThroughStyledLabel Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jide-oss Show documentation
Show all versions of jide-oss Show documentation
JIDE Common Layer (Professional Swing Components)
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