Ändern der Farbe von text in der drawstring()
Ich versuche, fügen Sie den Schwerpunkt auf eine Arbeit in einem string im zeichnen mit swing.
Mir wurde geraten, um HTML zu verwenden mit den folgenden code:
Graphics2D g2 = (Graphics2D) g;
g.drawString("this is something I want people to <p color="#00FF00">NOTICE</p>", x, y);
Habe ich versucht, dieses hatte aber kein Glück... es ist nur Ausgänge der HTML -
Kann jemand mich in die richtige Richtung?
Sie müssen escape-Angebote
InformationsquelleAutor Chris Headleand | 2012-12-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie funktioniert das kompilieren:
g.drawString("this is something I want people to <p color="#00FF00">NOTICE</p>", x, y);
'"' ist eine spezielle Zeichen-wir müssen fliehen es mit \Du wirkst auf Graphics2D, aber verwenden Sie es nicht (nicht relevant für problem, sondern kann dazu führen, Anomalien).
Sollte es sein:
hinzufügen Farbe rufen Sie einfach
setColor(Color c)
aufGraphic
s Objekt:Jedoch dadurch setzen Sie die gesamte Zeichenfolge gezogen werden grün, wenn Sie nur Teile gezeichnet werden grün verwenden
JLabel
für die HTML-Unterstützung (bis zu HTML3.2):vollständigen Beispiel:
NB Wie Sie sehen können, bemerken Sie auf einer eigenen Zeile das ist, weil der Absatz tag eher font tag, um es auf eine einzige Zeile, etwa so:
Gute Entscheidung, auf den " Escape-Zeichen zu.
InformationsquelleAutor David Kroukamp
Verwenden Grafik.setColor() um die Farbe zu ändern, was Sie tun. Oder verwenden Sie eine
JLabel
um die Farbe auf.InformationsquelleAutor Thirler
Verwenden
JLabel
für formatierten text. Sehen LabelRenderTest, wie gezeichnet werden kann, um ein Bild & wird in Farbe verwendet.Mit
Graphics
/AWT-MethodenDen string impliziert
NOTICE
sollte grün sein, aber der rest Standard (schwarz). Wir nennen müsstedrawString(String)
zweimal mit den Farben der zwei Teile der Zeichenfolge, die Aufrechnung der letzteren string durch die Breite des ersten. Um die Breite, die Dinge sehen, wieFontMetrics
oder eineGlyphVector
. Diese Antwort verwendet eineGlyphVector
um eine Kontur der Buchstaben.+1 JLabel zu sein scheint, was OP braucht
Hallo Andreas, ich bin bewegt von println() auf die GUI und die Suche nach der Umstellung ein wenig schwierig. Wenn ich war wachsende ist, gab es eine einfachere Möglichkeit, ich Frage mich, ob es etwas weniger Komplex, da habe ich keine Ahnung, was Los ist, in dieser massiven Liste der code, den Sie an mich. Dein "jemand" das Kommentar war nicht nur nonconstructive aber auch ziemlich abtörnend für jemanden zu kämpfen, neue Fähigkeiten zu erlernen.
Siehe den edit. Ich auch empfehlen, versucht die einfachen Dinge im GUIs. Custom painting (vor allem strings) ist ein Thema für fortgeschrittene.
Es kann erfolgt ohne die Verwendung einer styled-text-Komponente (siehe die "AWT Bearbeiten'), aber es wäre eine Menge Füllung rund. Ich bevorzuge die Nutzung der rendering-Fähigkeit von Swing zu zeichnen, text mit Stil.
InformationsquelleAutor Andrew Thompson
Wenn Sie nur ein einfaches label mit dem Schwerpunkt auf einem Wort, können Sie geben Sie einfach die HTML direkt auf der
JLabel
so...Solange Sie die
<html>
Stück am Anfang der Zeichenfolge für eineJLabel
zu verwenden, wird der HTML-renderer, es zu malen.Wie bereits von @AndrewThompson, aber die
<p>
zwingen wird, den farbigen text auf eine neue Zeile, also vielleicht<span>
wäre passender...Es ist sicherlich interessant @AndrewThompson, etwas, dass ein Mensch verstehen kann, einfach, kann sehr unterschiedlich interpretiert, die von einem computer stützt sich auf bestimmte syntax.
siehe meine upadted Antwort, warum HINWEIS ist auf seine eigene Linie
Ich habe gerade aktualisiert 'gut Bearbeiten' zu 'hervorragend Bearbeiten'. Mit einem
span
es macht mehr Sinn.InformationsquelleAutor wattostudios
können Sie g an.setColor(Color.BLAU) vor g.drawString(). (Zum Beispiel Farbe.BLAU)
NOTICE
sollte grün sein, aber der rest ..Standard. Wir nennen müsstedrawString
doppelt mit den beiden Farben, eine Versetzung der letzteren string durch die Breite des ersten.du hast Recht. Ich weiß, Sie haben nur einfach Lösung für das problem.
es kehrt die Farbe des ursprünglichen Bild und fügen Sie text in schwarz. eine andere setup getan werden muss, um dies zu nutzen ?
InformationsquelleAutor umert
Könnte man hinzufügen, g.setColor(Color.Gewählte Farbe);und schreiben Sie dann die Zeichenfolge mit g.drawString()
vielleicht
InformationsquelleAutor user2816767