K
Karl Soost
Gast
hallo ich habe ein kleines Problem,
ich versuche einem JLabel einen MouseListener zuzuordnen aber das funktioniert nicht so richtig.
das label wird als renderer für jlabel-komponenten benutzt. kann mir vielleicht jemand sagen warum der listener nicht funktionert???
ich versuche einem JLabel einen MouseListener zuzuordnen aber das funktioniert nicht so richtig.
Code:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
/**
*
* @author
*/
public class FahrzeugLabel extends JLabel
{
private TooltipFrame tooltipframe = null;
private Timer timer = null;
Action zeigeTooltip = new AbstractAction()
{
public void actionPerformed (ActionEvent e)
{
if ( tooltipframe != null )
tooltipframe.setVisible(true);
}
};
MouseAdapter LabelListener = new MouseAdapter()
{
@Override
public void mouseEntered (MouseEvent e)
{
//timer = new Timer(2000, zeigeTooltip);
//timer.setRepeats(false);
//timer.start();
if ( tooltipframe != null )
tooltipframe.setVisible(true);
}
@Override
public void mouseExited (MouseEvent e)
{
if ( tooltipframe != null )
if ( tooltipframe.isShowing() )
tooltipframe.setVisible(false);
if( timer.isRunning() )
timer.stop();
}
@Override
public void mouseMoved (MouseEvent e)
{
if ( tooltipframe != null )
if ( tooltipframe.isShowing() )
tooltipframe.setVisible(false);
}
@Override
public void mouseClicked (MouseEvent e)
{
if ( tooltipframe != null )
if ( tooltipframe.isShowing() )
tooltipframe.setVisible(false);
}
@Override
public void mouseWheelMoved (MouseWheelEvent e)
{
if ( tooltipframe != null )
if ( tooltipframe.isShowing() )
tooltipframe.setVisible(false);
}
};
public void setTooltip (String strTooltiptext)
{
this.tooltipframe = new TooltipFrame(strTooltiptext);
this.addMouseListener(LabelListener);
}
private class TooltipFrame extends JFrame
{
private JPanel mainPanel = new JPanel();
private JLabel label = new JLabel();
public TooltipFrame (String strTooltiptext)
{
this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
this.setLayout(new GridLayout(1, 1));
this.label.setText(strTooltiptext);
this.mainPanel.setLayout(new GridLayout(1, 1));
this.mainPanel.add(label);
this.getContentPane().add(mainPanel);
this.pack();
}
}
}
das label wird als renderer für jlabel-komponenten benutzt. kann mir vielleicht jemand sagen warum der listener nicht funktionert???