# ToolTip an Mausposition anzeigen



## SilentJ (2. Mai 2006)

Hallo,

ich würde gerne einen ToolTip an der Position meines Mauszeigers in einer Komponente anzeigen, sobald eine Maustaste gedrückt wurde. Hat jemand vielleicht ähnlichen Code bereits geschrieben?


----------



## frager (2. Mai 2006)

hi, was genau meinst du? jemand drückt irgendwo in der gui und dann soll da, wo die maus ist ein tooltip erscheinen?

gruß


----------



## SilentJ (2. Mai 2006)

Genau, dass möchte ich. 
Meine Lösung wäre, dass ich einen MouseListener an der betreffenden Komponente anmelde und da bei einem geeigneten Ereignis den anzuzeigenden Tooltip an der Mausposition anzeige...


----------



## tux2323 (2. Mai 2006)

Meine Quick Lösung :

```
import java.awt.FlowLayout;
import java.awt.SystemColor;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JWindow;

public class ToolTipp extends JWindow implements MouseListener{
		
		public ToolTipp(String message,JFrame frame){
			super(frame);
			setLayout(new FlowLayout(FlowLayout.CENTER));
			getContentPane().add(new JLabel(message));
			getContentPane().setBackground(SystemColor.info);
			getContentPane().setForeground(SystemColor.infoText);
			addMouseListener(this);
			pack();
		}

		public void mouseClicked(MouseEvent e) {
			setVisible(false);
		}

		public void mousePressed(MouseEvent e) {
		}

		public void mouseReleased(MouseEvent e) {
		}

		public void mouseEntered(MouseEvent e) {
		}

		public void mouseExited(MouseEvent e) {
		}
		
	
}

import java.awt.Point;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;

public class ToolTippFrame extends JFrame implements MouseListener, ComponentListener{
	
	private ToolTipp tipp;
	
	public ToolTippFrame(){
		init();
	}

	private void init() {
		addMouseListener(this);
		addComponentListener(this);
		tipp = new ToolTipp("Mein guter Tipp!!!",this);
	}

	public void mouseClicked(MouseEvent e) {
		if(!tipp.isVisible()){
			Point l = new Point(e.getX()+getLocation().x,e.getY()+getLocation().y);
			tipp.setLocation(l);
		}
		tipp.setVisible(!tipp.isVisible());
	}

	public void mousePressed(MouseEvent e) {}

	public void mouseReleased(MouseEvent e) {}

	public void mouseEntered(MouseEvent e) {}

	public void mouseExited(MouseEvent e) {}
	
	public static void main(String[] args) {
		ToolTippFrame toolTipp = new ToolTippFrame();
		toolTipp.setSize(800,600);
		toolTipp.setVisible(true);
	}

	public void componentResized(ComponentEvent e) {
		tipp.setVisible(false);
	}

	public void componentMoved(ComponentEvent e) {
		tipp.setVisible(false);
	}

	public void componentShown(ComponentEvent e) {
		tipp.setVisible(false);
	}

	public void componentHidden(ComponentEvent e) {
		
	}
}
```
Ich hoffe das hast du gemeint beimMaus Click wird ein Tipp angezeigt ..


----------



## byte (2. Mai 2006)

Tooltips werden eigentlich nicht beim Klick angezeigt sondern wenn der Cursor eine gewisse Zeit nicht bewegt wird. Und das geht doch trivialerweise per Component#setToolTipText()...

Ansonsten halt Custom ToolTips von JToolTip ableiten und die createToolTip() überschreiben...


----------



## tux2323 (2. Mai 2006)

Aber er will doch den ToolTipp der angezeigt wird wenn mit der Mause geklickt wird. 
Oder habe ich das falsch verstanden ?
Kann man das mit JToolTipp hinbekommen soweit ich weis nein ?

Gut ich gebe zu ist keine schön Lösung halt nen Quick Hack ...


----------

