【发布时间】:2011-07-01 01:15:44
【问题描述】:
我可以在java中为字符串设置字体属性吗?
【问题讨论】:
-
这个问题缺少有关您使用的是 swing、awt、swt 还是其他东西的信息 - 甚至可能是控制台。
-
我在标签中添加了“控制台”。
标签: java string fonts properties console
我可以在java中为字符串设置字体属性吗?
【问题讨论】:
标签: java string fonts properties console
字体属性是在您正在使用的 GUI 对象(JLabel 等)中的字体对象上设置的,而不是在 String 本身上设置的。
编辑:
如果您想向控制台添加格式,则必须将格式嵌入到 String 本身中。为了让我的输出变得粗体,我需要执行以下操作:
System.out.println((char)27 +"[1m testing bold");
(char) 27 是一个转义序列,[ 后跟一组 ; 不同格式类型的分隔值(见下文),然后是 m。你需要玩弄这个。在我的 Mac 上,命令提示符继续以粗体显示,因为我在退出之前没有重置为正常 ([0m)。
顺便说一句,此信息来自here。 一些属性:
0 正常(全部清除) 1个粗体 2 暗淡 4 下划线 5 闪烁 7 反向 8 空白 9 重击 22 正常强度(取消粗体和空白) 24 下划线关闭 25 闪烁关闭 27 反向关闭 28 空白关闭 29 超额罢工 30黑色 31红色 32 绿色 33 黄色 34蓝色 35 品红色 36 青色 37白 40黑色背景 41红色背景 42绿色背景【讨论】:
JLabel 或 JButton 或任何 GUI 对象上应用字体设置(使用 myLabel.setFont(myLabel.getFont().deriveFont(Font.BOLD)) 或类似的东西),String 将显示特定属性 (粗体、斜体等)。
字符串没有字体,因为它完全独立于任何显示方式。 字体与您用来向用户呈现字符串的用户界面组件有关,如何设置它取决于这些用户界面组件。
【讨论】:
new JLabel ("<html>foo<b>bold bar</b>font</html>")
您可以使用AttributedString。以下是一些示例:JavaDocExamples
Font font = new Font("LucidaSans", Font.PLAIN, 14);
AttributedString messageAS = new AttributedString(textMessage);
...
messageAS.addAttribute(TextAttribute.FONT, font);
AttributedCharacterIterator messageIterator = messageAS.getIterator();
FontRenderContext messageFRC = graphics2D.getFontRenderContext();
LineBreakMeasurer messageLBM = new LineBreakMeasurer(messageIterator, messageFRC);
【讨论】: