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(); } }); } }
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!