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

Jas*_*n S 8 java fonts swing

我正在搞乱DefaultStyledDocument,并试图找出将样式设置为正确的等宽字体的正确方法."正确"我的意思是选择的字体是:

  1. 用户机器上存在的等宽字体
  2. 用户首选项指定的字体(在Java中有标准方法吗?)
  3. 如果没有指定的字体,它将回退到标准的等宽字体("Monospaced").

这有效:

StyleConstants.setFontFamily(mainStyle, "Monospaced");
Run Code Online (Sandbox Code Playgroud)

这也有效:

StyleConstants.setFontFamily(mainStyle, "Lucida Console");
Run Code Online (Sandbox Code Playgroud)

但我似乎无法弄清楚如何判断有问题的字体系列是否存在于用户的机器上(setFontFamily没有返回值)并且是等宽字体.如果我使用"Lucida Consoleq"它似乎使用默认字体.

Joe*_*nza 3

我想你想要这个

GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
Run Code Online (Sandbox Code Playgroud)

参见javadoc