ToolTipps

Status
Nicht offen für weitere Antworten.
H

Help

Gast
Hallo Forengemeinde!

Ich habe eine piant methode die momentan über g.drawRectangle balken zeichnet.

Nun ja, ich möchte nun aber auch gern ToolTips machen. Also wenn ich über einen dieser Balken mit der maus fahre möchte ich einen Tooltip bekommen.

Wie geht das?

Könnte mir jmd. erkären wie ich soetwas machen könnte?

Wäre nett!
 

Wildcard

Top Contributor
MouseListener hinzufügen, prüfen was unter dem Cursor liegt, setTooltipText auf der Component aufrufen.
 
G

Guest

Gast
Öhm, wie meinen?

Wie kann ich denn einem Rectangle ein listener hinzufügen?

Bzw. die methode settooltip hat der Rectangle gar nicht :(

Oder wie meinst du das? Kannst du das etwas näher erklären? BItte
 
G

Guest

Gast
Ok, das habe ich nun verstanden. :)

Aber was macht dann der Listener? Wie genau läuft das ab?

Bitte erklärt mir das? Hat jmd. evtl. sogar ein Code schnipsel?
 
G

Guest

Gast
Na ja, aber wie bekomme ich denn informtionen die ich auslesen will in ein recttangle?

Also ich will beispielsweise auch, dass wenn was über das rectangle ghet etwas angezeigt wird.

Es gibt natürlich mehrere und jede soll eine andere info enthalten!

Wie soll denn soetwas gehen? :eek:
 

Leroy42

Top Contributor
Indem du die Mauskoordinaten mit getX() und getY() ausliest und selbst
nachprüfst in welchem deiner Rechtecke das Ereignis eingetreten ist.

Dazu mußt du dir natürlich merken, wo du die Rechtecke zeichnest.
 
G

Guest

Gast
öhm, ok..

Wie soll das denn gehen?

Ich mein:

Ich will Rechtecke Zeichnen. Dahinter soll eine Art mouseover event sein. Also wenn ich mit der Maus in das rechteck rein gehe soll etwas passieren, wenn ich raus bin auch.

Jetzt hatte ich ürsprünglich gedacht ich bau das einfach mit JPanel und geb denen einfach einen Background. Nun ja, problem hier bei ist, wenn die sich überschneiden. Dann wird immer nicht das erst gezeichnete angezeigt. Wobei der Sinn eigentlich wäre das zuletzt gezeichnete DIng anzuzeigen.

Könnte man mit bitte Detailiert erklären wie ich das machen kann?

Also mit Panel scheint das ja nicht zu gehen. Oder doch?

Rectangle rect = new Rectangle(10,10,40,40);
Mit g.draw(rect)

Zeichnet mir zwar alles so wie ich es will, will aber ein Mouseover event haben. Informationen hinterlegen etz...

Kann ich irgendwie ein Object erstellen das sich Rechteck nennt, dem ein mouseover event geben und dann einfach irgendwie zeichnen lassen?

Wäre schön wenn ihr mir helfen würdet. Ist echt wichtig und ich Blicke überhaupt nicht durch :(

Opimal wäre echt ein eigenes Object dem ich alles hinterlegen kann was ich brauche. Ein Mouseevent dazu und eben eine Zeichenmethode.

PLs help.
 

Marco13

Top Contributor
Über Architekturfragen wirst du dir schon selbst Gedanken machen müssen. Der rein technische Teil zum MouseMotionListener
Code:
class Foo extends JPanel implements MouseMotionListener
{
    private Rectangle rectangle = new Rectangle(10,10,40,40);
    private Point previousPosition = new Point();

    public void Foo()
    {
         addMouseMotionListener(this);
    }

    public void paintComponent(Graphics g)
    {
         super.paintComponent(g);
         g.draw(rectangle) 
    }

    public void mouseDragged(MouseEvent e){}

    public void mouseMoved(MouseEvent e)
    {
         Point currentPosition = e.getPoint();
         if (rectangle.contains(previousPosition) && !rectangle.contains(currentPosition))
         {
              System.out.println("Raus");
         }
         if (!rectangle.contains(previousPosition) && rectangle.contains(currentPosition))
         {
              System.out.println("Rein");
         }
         previousPosition = currentPosition;
    }
}

Bei den beiden Ausgaben ("Raus"/"Rein") könntest du den passenden Tooltip setzen.
 
G

Guest

Gast
OK, das mit dem Listener habe ich verstanden. Aber wie sage ich nun jedem rectangle welche informationen er hat?

Also ich zeichne ja mehrere Balken übereinander und nebeneinander. Da will ich nun jedem Balken eine bestimmte operation mitgeben. Aber wie?

Ich mein das mit der Maus, das habe ich ja nun kapiert, aber wie gebe ich da nun eine bestimmte aktion mit? :eek:
 

Marco13

Top Contributor
Einfachste Lösung
Code:
class RectangleWithInfo extends Rectangle
{
    public Object getInfo() { .... }

    // + set-methode und passende Konstruktoren
}

class Foo extends JPanel implements MouseMotionListener
{
    private RectangleWithInfo rectangle = new RectangleWithInfo(10,10,40,40); 

....
}
 
Status
Nicht offen für weitere Antworten.

Oben