Существуют ли в Java встроенные методы для увеличения размера шрифта? - PullRequest
12 голосов
/ 25 июня 2009

Есть ли в Java какие-либо встроенные методы для увеличения размера шрифта?

Ответы [ 6 ]

17 голосов
/ 25 июня 2009

Класс Font позволяет указать размер шрифта.

Итак, чтобы создать шрифт, вы делаете что-то вроде этого:

Font f = new Font("serif", Font.PLAIN, fontSize);

Параметр fontSize будет определять размер вашего Font.

Вы не можете изменить размер существующего объекта Font. Лучший способ добиться подобного эффекта - использовать метод deriveFont(size) для создания нового почти идентичного Font, который имеет другой размер.

Font biggerFont = existingFont.deriveFont(bigNumber);
10 голосов
/ 25 июня 2009

Вы можете получить новый шрифт с другим размером, используя следующее:

Font original = // some font
Font bigger = original.deriveFont(newSize);

Где newSize - это число с плавающей запятой, не int. Это хорошо задокументировано в JavaDoc для шрифтов, как указывали другие люди

7 голосов
/ 03 августа 2011

Я интерпретировал этот вопрос как «Как я могу увеличить размер шрифта для Swing по всем направлениям». Я не знаю ни одного встроенного способа сделать это, но вы могли бы сделать это самостоятельно, изменив значения в классе UIManager при запуске перед созданием любых компонентов Swing.

Я делаю это, передавая в приложение параметр, который я использую в качестве множителя. Если я передам 150, это умножит все существующие шрифты на 150%. Код выглядит следующим образом

public static void initializeFontSize() {
    String fontSizeParam = System.getProperty("myapp.fontSize");
    if (fontSizeParam != null) {
        float multiplier = Integer.parseInt(fontSizeParam) / 100.0f;
        UIDefaults defaults = UIManager.getDefaults();
        int i = 0;
        for (Enumeration e = defaults.keys(); e.hasMoreElements(); i++) {
            Object key = e.nextElement();
            Object value = defaults.get(key);
            if (value instanceof Font) {
                Font font = (Font) value;
                int newSize = Math.round(font.getSize() * multiplier);
                if (value instanceof FontUIResource) {
                    defaults.put(key, new FontUIResource(font.getName(), font.getStyle(), newSize));
                } else {
                    defaults.put(key, new Font(font.getName(), font.getStyle(), newSize));
                }
            }
        }
    }
}
7 голосов
/ 27 июня 2009

Предполагая, что вы хотите изменить размер шрифта для определенного JLabel, вы можете сделать:

label.setFont(label.getFont().deriveFont(newSize));

Убедитесь, что newSize является float, а не int.

6 голосов
/ 27 июня 2009

вы можете установить свойство swing.plaf.metal.controlFont при запуске приложения:

java -Dswing.plaf.metal.controlFont = Dialog-50 YourMainClass

в этом примере вы устанавливаете шрифт по умолчанию «Диалог» с размером 50.

2 голосов
/ 23 мая 2012

Вопрос слишком расплывчат, чтобы дать хороший ответ. Но я думаю, что вы хотите систематически увеличивать размер шрифта в вашем приложении.

Лицо, стиль и размер шрифта в приложении Java Swing контролируются с помощью механизма LookAndFeel. Вам нужно изменить внешний вид шрифта, если вы хотите, чтобы изменения применялись ко всем компонентам Swing данного типа.

Посмотрите на пример UIManager .

Вот как глобально изменить шрифт для некоторых компонентов пользовательского интерфейса:

    UIManager.put("Label.font", new FontUIResource(new Font("Dialog", Font.PLAIN, 10)));
    UIManager.put("Button.font", new FontUIResource(new Font("Dialog", Font.BOLD, 10)));
    UIManager.put("TextField.font", new FontUIResource(new Font("Dialog", Font.PLAIN, 10)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...