2016-07-18 14 views
2

So, hier ist mein kniffliges Problem:Wie die Schriftart in Java BasicHTML Ansicht verwendet ändern, wenn fett/kursiv

In unserer App sind wir Swing-Ansichten mit Text darzustellen, insbesondere diejenigen, die HTML verwenden und interpretieren . Hier ist ein kleiner Ausschnitt unseren Mechanismus zu zeigen:

JLabel label = new JLabel(); 
label.setFont(StyleContext.getDefaultStyleContext().getFont("Roboto Light", Font.PLAIN, 13)); 

label.setText("<p><strong>bold</strong></p>"); 

htmlView = BasicHTML.createHTMLView(label, label.getText()); 

Diese Lösung für uns seit einigen Jahren völlig in Ordnung ist jetzt, und alle fett oder kursiv Worte, umgerechnet von HTML/CSS im Text-String, wurden angezeigt Gut.

Aber jetzt verwenden wir eine neue Schriftart (genauer gesagt: Roboto Light), und wir sind unzufrieden mit den resultierenden Schriften/"wie die Buchstaben aussehen", wenn Wörter fett oder kursiv sind.

Nun unsere Frage ist: Gibt es eine Möglichkeit, die Ansicht oder eine Komponente, welche Schriftart zu verwenden, wenn die Standardschriftart mit einem fett/kursiven Wort kombiniert wird?

+0

Es sicher ist, und das Geheimnis liegt in den verwendeten Arten (CSS). –

+0

Gibt es eine zentrale Stelle, an der allgemeine CSS-Regeln festgelegt werden können, wie stark {font-weight: bold;} oder .bold {font-family: Roboto Medium;}? –

Antwort

4

Die Schriftarten können in einem Stylesheet eingestellt werden.

enter image description here

import javax.swing.*; 

public class CustomFontForBoldAndItalic { 

    public static String EOL = System.getProperty("line.separator"); 
    private static String styles = 
      "p {font-family: serif; font-size: 25px;}" + EOL 
      + "b {font-family: sans-serif;}" + EOL 
      + "em {font-family: monospaced;}" + EOL 
      ; 
    private static String html = "<html><head><title>HaHa</title><style type='text/css'>" 
      + EOL 
      + styles + "</style></head><body>" 
      + "<p>This part is <b>bold</b> while this part is <em>italic</em>.</p>" 
      + "</body></html>"; 

    public static void main(String[] args) { 
     Runnable r = new Runnable() { 
      @Override 
      public void run() { 
       JOptionPane.showMessageDialog(null, new JLabel(html)); 
      } 
     }; 
     SwingUtilities.invokeLater(r); 
    } 
} 
Verwandte Themen