правильный способ выбора моноширинных шрифтов в Swing - PullRequest
8 голосов
/ 06 апреля 2009

Я возиться с DefaultStyledDocument и пытаюсь найти правильный способ установить стиль для правильного моноширинного шрифта. Под «правильным» я подразумеваю, что выбранный шрифт:

  1. Моноширинный шрифт, существующий на компьютере пользователя
  2. Шрифт, указанный в настройках пользователя (есть ли стандартный способ сделать это в Java?)
  3. Если указанный шрифт не указан, он будет использовать стандартный моноширинный шрифт («Monospaced»).

Это работает:

StyleConstants.setFontFamily(mainStyle, "Monospaced");

и это тоже работает:

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

но я не могу понять, как определить, существует ли данное семейство шрифтов на компьютере пользователя (нет возвращаемого значения для setFontFamily) и является моноширинным шрифтом. Если я использую «Lucida Consoleq», он, похоже, использует любой шрифт по умолчанию.

Ответы [ 3 ]

3 голосов
/ 07 апреля 2009

См. javadoc для java.awt.Font. Похоже, вы можете использовать метод public static Font decode(String str), чтобы выполнить то, что вы хотите. Последний абзац javadoc для этого метода говорит:

Размер по умолчанию 12, а по умолчанию стиль это простой Если ул не укажите действительный размер, возвращаемый Шрифт имеет размер 12. Если str не указать правильный стиль, возвращаемый Шрифт имеет стиль PLAIN. Если вы делаете не указывать правильное имя шрифта в аргумент str, этот метод вернет шрифт с фамилией "Диалог". Чтобы определить, какие шрифты фамилии доступны в вашей системе, используйте GraphicsEnvironment.getAvailableFontFamilyNames () метод. Если str равен нулю, новый шрифт вернулся с фамилией «Диалог», размер 12 и Равнина стиль.

Если искомого семейства шрифтов не существует, вы получите «Dialog». Пока вы не получите это в качестве возвращаемого значения, семейство шрифтов существует.

3 голосов
/ 19 апреля 2011

Monospaced - это виртуальное имя (например, Dialog), которое Java будет сопоставлять со стандартным шрифтом фиксированной ширины системы.

2 голосов
/ 06 апреля 2009

Я думаю, вы хотите это

GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();

См. Javadoc

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...