Heim >Java >javaLernprogramm >Wie zeige ich HTML-Text mit drawString in Swing an?

Wie zeige ich HTML-Text mit drawString in Swing an?

Linda Hamilton
Linda HamiltonOriginal
2024-11-14 20:03:02282Durchsuche

How to Display HTML Text using drawString in Swing?

Swing HTML-Problem mit drawString: HTML-Format rendern

Frage:

In einem Versuch Um HTML-Text innerhalb einer benutzerdefinierten Komponente mit der Methode drawString der Klasse Graphics zu zeichnen, bleibt das HTML-Format unerkannt. Stattdessen wird die Zeichenfolge ohne besondere Behandlung angezeigt.

Antwort:

Während die Methode drawString häufig zum Zeichnen einfacher Zeichenfolgen verwendet wird, unterstützt sie grundsätzlich keine HTML-Formatierung . Um HTML-Inhalte effektiv in Swing-Komponenten zu rendern, wird ein alternativer Ansatz empfohlen:

Verwenden einer Komponente für das HTML-Rendering:

Die bevorzugte Lösung besteht darin, eine benutzerdefinierte Komponente zu erstellen, die dient der spezifische Zweck des HTML-Renderings. Dies ermöglicht eine bessere Kontrolle darüber, wie der HTML-Code interpretiert und innerhalb der Komponente angezeigt wird.

Der folgende Codeausschnitt beschreibt beispielsweise eine vereinfachte Implementierung, die HTML-Text in einem JPanel mithilfe einer Renderer-Komponente anzeigt:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.CellRendererPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class HtmlRenderer extends JPanel {

    private static final String HTML_STRING = "<html><b><i>Hello World!</i></b></html>";
    private JLabel renderer = new JLabel(HTML_STRING);
    private CellRendererPane crp = new CellRendererPane();
    private Dimension dim;

    public HtmlRenderer() {
        dim = renderer.getPreferredSize();
        this.add(crp);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        renderer.setForeground(Color.BLUE);
        crp.paintComponent(g, renderer, this, 0, 0, dim.width, dim.height);
    }

    private void display() {
        JFrame frame = new JFrame("HTML Renderer");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(this);
        frame.pack();
        frame.setSize(dim.width + 20, dim.height + 20);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                HtmlRenderer renderer = new HtmlRenderer();
                renderer.display();
            }
        });
    }
}

Das obige ist der detaillierte Inhalt vonWie zeige ich HTML-Text mit drawString in Swing an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn