在 Swing 中选择等宽字体的正确方法

发布于 2024-07-16 09:02:22 字数 508 浏览 4 评论 0原文

我正在摆弄 DefaultStyledDocument,并试图找出将样式设置为正确的等宽字体的正确方法。 我所说的“正确”是指选择的字体是:

  1. 用户计算机上存在的等宽字体
  2. 由用户首选项指定的字体(在 Java 中是否有标准方法来执行此操作?)
  3. 如果没有指定的字体,它将依靠标准等宽字体(“Monospaced”)。

这有效:

StyleConstants.setFontFamily(mainStyle, "Monospaced");

这也有效:

StyleConstants.setFontFamily(mainStyle, "Lucida Console");

但我似乎无法弄清楚如何判断所讨论的字体系列是否既存在于用户的计算机上(setFontFamily 没有返回值)并且是等宽字体。 如果我使用“Lucida Consoleq”,它似乎会使用默认字体。

I'm messing around with DefaultStyledDocument and am trying to figure out the right way to set a style to the proper monospaced font. By "proper" I mean that the font selected is:

  1. A monospaced font that exists on the user's machine
  2. A font specified by the user's preferences (is there a standard way to do this in Java?)
  3. If there is no specified font, it will fall back on the standard monospaced font ("Monospaced").

This works:

StyleConstants.setFontFamily(mainStyle, "Monospaced");

and this also works:

StyleConstants.setFontFamily(mainStyle, "Lucida Console");

but I can't seem to figure out how to tell if the font family in question both exists on the user's machine (there's no return value to setFontFamily) and is a monospaced font. If I use "Lucida Consoleq" it seems to use whatever the default font is.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

吃兔兔 2024-07-23 09:02:23

请参阅 javadoc 了解 java.awt.Font。 看来您可以使用 public static Font Decode(String str) 方法来完成您想要的任务。 该方法的 javadoc 最后一段说:

默认大小为12,默认
风格是朴素的。 如果 str 没有
指定有效大小,返回
字体大小为 12。如果 str 不是
指定有效的样式,返回
字体风格为PLAIN。 如果你这样做
未在中指定有效的字体名称
str 参数,此方法将返回
家族名称为“Dialog”的字体。
确定什么字体系列名称
在您的系统上可用,请使用
GraphicsEnvironment.getAvailableFontFamilyNames()
方法。 如果 str 为 null,则新的 Font 为
以姓氏返回
“Dialog”,大小为 12 和 PLAIN
风格。

如果您要查找的字体系列不存在,您将得到“Dialog”返回。 只要您没有将其作为返回值,字体系列就存在。

See the javadoc for java.awt.Font. It appears you may be able to use the public static Font decode(String str) method to accomplish what you want. The last paragraph of the javadoc for this method says:

The default size is 12 and the default
style is PLAIN. If str does not
specify a valid size, the returned
Font has a size of 12. If str does not
specify a valid style, the returned
Font has a style of PLAIN. If you do
not specify a valid font name in the
str argument, this method will return
a font with the family name "Dialog".
To determine what font family names
are available on your system, use the
GraphicsEnvironment.getAvailableFontFamilyNames()
method. If str is null, a new Font is
returned with the family name
"Dialog", a size of 12 and a PLAIN
style.

If the font family you are looking for does not exist, you will get "Dialog" returned. As long as you do not get that as a return value, the font family exists.

慢慢从新开始 2024-07-23 09:02:23

我想你想要这个

GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();

请参阅 javadoc

I think you want this

GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();

See javadoc

停顿的约定 2024-07-23 09:02:22

Monospaced 是一个虚拟名称(如 Dialog),Java 将其映射到系统默认的固定宽度字体。

Monospaced is a virtual name (like Dialog) which Java will map to the default fixed-width font of the system.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文