【问题标题】:Font settings for strings in javajava中字符串的字体设置
【发布时间】:2011-07-01 01:15:44
【问题描述】:

我可以在java中为字符串设置字体属性吗?

【问题讨论】:

  • 这个问题缺少有关您使用的是 swing、awt、swt 还是其他东西的信息 - 甚至可能是控​​制台。
  • 我在标签中添加了“控制台”。

标签: java string fonts properties console


【解决方案1】:

字体属性是在您正在使用的 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绿色背景

【讨论】:

  • @akf :所以我无法显示应用了字体设置的字符串。对吗?
  • 您可以在 JLabelJButton 或任何 GUI 对象上应用字体设置(使用 myLabel.setFont(myLabel.getFont().deriveFont(Font.BOLD)) 或类似的东西),String 将显示特定属性 (粗体、斜体等)。
  • @akf :感谢您的回复。这里我不使用任何摆动组件。我需要将属性应用于字符串并在控制台上显示它。
  • 那些 ansicode 可以在 Linux 中运行——至少在过去 13 年中我尝试过的每一种风格都是如此。但在 Windows 上,它不能开箱即用,您需要“ansi.sys”并进行一些配置以使其工作。
【解决方案2】:

字符串没有字体,因为它完全独立于任何显示方式。 字体与您用来向用户呈现字符串的用户界面组件有关,如何设置它取决于这些用户界面组件。

【讨论】:

  • 有时有:new JLabel ("<html>foo<b>bold bar</b>font</html>")
【解决方案3】:

您可以使用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);

【讨论】:

  • 请在此答案中添加示例。链接的示例可能会消失。
【解决方案4】:

我找到了另一种方式来逃避“\033”here

另外,我想要关于“我发现 here 的 akf 属性图表的官方属性列表 - 在“SGR(选择图形渲染)参数”表中引用

我想补充一点,这些在 Eclipse 控制台输出中都不适合我。我认为这是不可能的?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-07
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多