2012-04-03 13 views
2

meine Java-Anwendung einen JPanel enthält, auf das ich bestimmte Formen zeichnen. Jetzt möchte ich diese Formen mit einigen Tooltips beschriften.Quick-Info für eigene Zeichnungen

Deshalb habe ich versucht, mit Hilfe des drawString my own "Tooltips" zu schaffen, setBackground, setColor Methode .:

public void drawToolTip(Graphics2D graphics, String text, Point2D position) { 
    graphics.setBackground(Color.RED); 
    graphics.setColor(Color.GREEN); 
    graphics.drawString(text, (float) position.getX(), (float) position.getY()); 
} 

Leider ist die setBackground Methode nicht zu funktionieren scheint. Der Texthintergrund bleibt transparent, obwohl ich ihn auf rot setze. setColor und drawString funktionieren einfach.

Meine Fragen sind:

  • Was könnte der Grund sein, dass die setBackground Methode nicht funktioniert?
  • Gibt es eine Möglichkeit, einen Boarder rund um den Text ohne drawRect zu ziehen?
  • Wenn ich will „drawRect“ -Methode als substitude verwenden, um den Text Hintergrund und die Grenze zu ziehen: Wie kann ich es machen, um den geschriebenen Text automatisch fit? Oder mit anderen Worten: Wie kann ich die Dimensionen eines bestimmten Textes erhalten?

Grüße Marc

+0

Wie erhalten Sie dieses Graphics2D-Objekt übrigens? Kommt es von einem BufferedImage? Rufen Sie 'getGraphics()' oder 'createGraphics()' für eine Komponente auf? –

+0

In der Malmethode eines JPanel mache ich: Graphics2D graphics2d = (Graphics2D) Grafiken; und rufen Sie die drawToolTip-Methode auf. – Marc

Antwort

4
  • Graphics2D.drawString() zeichnet standardmäßig keinen Hintergrund. Sie müssen das selbst tun.

  • können Sie drawRect() verwenden, um eine Linie Grenze oder fillRec() zu zeichnen ein solides Rechteck zu zeichnen.

  • Oracle hat eine große tutorial auf Breiten String messen. Im Wesentlichen müssen Sie eine java.awt.Font erstellen, dann erhalten Sie FontMetrics und verwenden Sie das, um die Breite und Höhe Ihrer Zeichenfolge zu berechnen.

+0

Stellen Sie außerdem sicher, dass Sie 'Graphics2D.setFont()' aufrufen, so dass Sie tatsächlich den 'String' mit derselben Schriftart zeichnen, für die Sie' FontMetrics' erhalten haben. – ulmangt

3

Eine einfache Implementierung würde bedeuten, auf das Graphics Objekt eines JLabel ‚s Symbol zeichnen. Fügen Sie dann einfach den QuickInfo-Text zur Swing-Komponente hinzu.

Weitere Informationen finden Sie How to Use Tool Tips.

3

Sie können keine Hintergrundfarbe, die Art und Weise ändern, die Sie graphics.setBackground(..) Anruf erwarten verwenden. Das Festlegen der Hintergrundfarbe in Graphics2D betrifft nur die Aufrufe von clearRect oder fillRect und nicht die Hintergrundfarbe der Komponente.

Für ein Rechteck an einer Stelle zeichnen Sie es wünschen, mit spezifischen Boden zurück, werden Sie auf folgende Schritte, um das Relais haben:

  1. ein Rechteck definieren - r
  2. grpahics.setPaint() für Hintergrund und
  3. graphics.fill(r)graphcis.setPaint() für Grenze und
  4. 10 Grenze zu zeichnen

jetzt, kommt der schwierige Teil der Zeichnung Text in das Rechteck, die Berechnung der Höhe usw. beinhaltetbasierend auf FontMetrics der Schriftart, die Sie zum Zeichnen des Textes festlegen würden. Ich googelte und fand ein Beispiel für Sie here

Verwandte Themen