所以这是我棘手的问题:
在我们的应用中,我们使用Swing Views来显示文本项,更具体地说是使用和解释HTML的文本项。 这是一个显示我们机制的小片段:
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());
这个解决方案对我们来说非常好用了好几年了,而且在文本字符串中从HTML / CSS转换而来的所有粗体或斜体字都显示得很好。
但是现在我们正在使用一种新字体(更具体地说是:Roboto Light),当字词是粗体或斜体时,我们对结果字体/“字母看起来如何”感到不满。
现在我们的问题是:当标准字体与粗体/斜体字组合时,有没有办法告诉视图或任何组件,使用哪种字体?
答案 0 :(得分:4)
可以在样式表中设置字体。
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);
}
}