Maison > Java > javaDidacticiel > Comment afficher du texte HTML à l'aide de drawString dans Swing ?

Comment afficher du texte HTML à l'aide de drawString dans Swing ?

Linda Hamilton
Libérer: 2024-11-14 20:03:02
original
286 Les gens l'ont consulté

How to Display HTML Text using drawString in Swing?

Problème Swing HTML avec drawString : rendu du format HTML

Question :

Dans une tentative pour dessiner du texte HTML au sein d'un composant personnalisé à l'aide de la méthode drawString de la classe Graphics, le format HTML reste non reconnu. Au lieu de cela, la chaîne est affichée sans aucun traitement spécial.

Réponse :

Bien que la méthode drawString soit couramment utilisée pour dessiner des chaînes simples, elle ne prend pas automatiquement en charge le formatage HTML. . Pour restituer efficacement le contenu HTML dans les composants Swing, une approche alternative est recommandée :

Utilisation d'un composant pour le rendu HTML :

La solution préférée consiste à créer un composant personnalisé qui sert le but spécifique du rendu HTML. Cela permet un meilleur contrôle sur la façon dont le HTML est interprété et affiché dans le composant.

Par exemple, l'extrait de code ci-dessous décrit une implémentation simplifiée qui affiche le texte HTML dans un JPanel à l'aide d'un composant de rendu :

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();
            }
        });
    }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal