Hi all,
i have a custom component (extending JComboBox) overriding the getToolTipText(MouseEvent me) method to provide custom tooltips.
Yet the tooltip does not show. (a test println in the getToolTipText methods showed it was not even called). I also register the component with the ToolTipManager. Did i forget something?
Thanks for your help,
Wolfgang
===============
package de.tum.in.abe.util;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseEvent;
import javax.swing.JComboBox;
import javax.swing.ToolTipManager;
/**
* This class represents a status bar as used throughout the ABE
* application, e.g. in {@link de.tum.in.abe.core.gui.StdGUI} or in
* {@link de.tum.in.abe.plugin.PluginFrame}
* @version $Id$
* @author
Wolfgang Herder
*/
public class ABEStatusBar extends JComboBox implements ItemListener {
/**
* Initialize status bar: Add <code>this</code>
* as <code>ItemListener</code>.
*/
public ABEStatusBar() {
super();
this.addItemListener(this);
ToolTipManager.sharedInstance().registerComponent(this);
}
/**
* Show status message.
* @param The message to show.
*/
public void showStatus(String message) {
insertItemAt(message, 0);
setSelectedIndex(0);
}
/**
* Make sure the first item is always selected.
* @see java.awt.event.ItemListener#itemStateChanged(ItemEvent)
*/
public void itemStateChanged(ItemEvent ie) {
if (getSelectedIndex() != 0) {
setSelectedIndex(0);
}
}
/**
* Override
* {@link javax.swing.JComponent#getToolTipLocation(java.awt.event.MouseEvent)}
* to generate dynamic tooltip text (always show first item's text).
* @return appropriate tooltip text
*/
public String getToolTipText(MouseEvent me) {
if (this.getItemAt(0) == null) {
return "";
}
else {
return (String) this.getItemAt(0);
}
}
}