【问题标题】:JTextArea doesn't show native-font emoticonsJTextArea 不显示本机字体表情符号
【发布时间】:2020-01-04 08:08:07
【问题描述】:

当我使用标准输出打印包含表情符号的文本时,会显示表情符号(图 1)。但是当我在 JTextArea 中显示文本时,表情符号显示为不明字符 (pic2)。如何解决?

我在 OS X 上使用与其他编辑器相同的 JTextArea 字体。

编辑:我不想放置预定义的图像表情符号。相反,我想显示带有字体的本机表情符号。因此,如果我在任何文本编辑器中编写 :),我会得到一个表情符号,因为字体已经有了这个。我希望它在 JTextArea 中工作。

【问题讨论】:

  • 尝试将 JTextArea 的字体设置为与终端使用的字体同族的字体,即不同大小的终端字体。如果您愿意,也可以选择相同的尺寸。
  • @VGR 这就是我所做的,但它没有用:(

标签: java macos swing


【解决方案1】:

我假设您正在呈现的字符串只是纯文本,其中包含来自 miscellaneous symbols range 或类似块的 Unicode 表情符号字符 - 例如,皱眉的脸是 U+2639?如果不是这种情况,您可以忽略此答案的其余部分(并考虑更新您的问题以指定您正在在做什么)。

您说过“它适用于标准输出,但不适用于 JTextArea” - 但在我看来,您的标准输出控制台视图中使用的字体与 JTextArea 中使用的字体不同(查看“Maggie”中的“i”字符作为字体不同的示例)。

看起来好像用于在控制台窗口中呈现字符的字体“知道”如何绘制 U+2639,但在 JTextArea 中使用的字体并不“知道”如何呈现特点。您看到的“未识别字符”通俗地称为“豆腐”:当字体不知道如何绘制字符时,它会改为绘制“white square”字符。尝试使用 API canDisplay() 方法来确定特定字体是否“知道”如何显示特定字符​​。

您在 JTextArea 上设置的究竟是什么字体以及如何设置?
考虑发布SSCCE - 我现在确实可以访问 OS X 环境,所以我可以提供帮助;当然,如果他们能清楚地看到你在做什么,他们可能会帮助你。

【讨论】:

  • +1 可用字体列表可在此处使用。对于每种字体,只需调用 canDisplay() 即可传递所需的字符。当找到合适的字体时,它可以用于 JTextArea。
【解决方案2】:

使用 JTextPane。将内容类型设置为 text/html。并通过 setText(); 放置适当的 html;

关于本地图片http://java-sl.com/tip_local_images.html

还有这个关于微笑http://java-sl.com/tip_autoreplace_smiles.html

【讨论】:

  • 我需要继续在应该显示文本的地方添加文本。所以我调用append()。但我不确定在 JTextPane 上继续调用 setText() 是否好。
  • 我刚刚尝试过...随着我不断添加文本,这将无法扩展
  • 哦,我想显示原生字体表情,而不是预定义的图像!
猜你喜欢
  • 1970-01-01
  • 2020-10-13
  • 2015-09-12
  • 2021-10-11
  • 2019-04-22
  • 2022-01-16
  • 1970-01-01
  • 2019-02-05
  • 2012-05-27
相关资源
最近更新 更多