2009-06-25 1 views

ответ

14

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

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

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

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

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

Font biggerFont = existingFont.deriveFont(bigNumber); 
+1

Примечание: вам нужно указать, что 'bigNumber' является поплавком, иначе вы вызовете перегрузку' deriveFont (int style) '. То есть 'ExistingFont.deriveFont (100f);'. –

+0

будет ли этот метод «deriveFont (size)» создает новый объект шрифта? – JAVA

7

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

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

Где NewSize является поплавок, не Int. Это хорошо документированы в JavaDoc для шрифта, как и другие люди указали

+1

+1. @Raji: Кроме того, если вы хотите увеличить размер шрифта на компонентах графического интерфейса, вы можете сделать это, сохранив набор шрифтов и формат. Например: myLabel.setFont (myLabel.getFont(). DeriveFont (20)); Затем вы можете реализовать рекурсивный алгоритм, который выполняет эту операцию во всей иерархии компонентов. Просто идея. – akarnokd

+2

newSize _must_ быть 'float', а не' int'. См. [DeriveFont (float)] (http://docs.oracle.com/javase/6/docs/api/java/awt/Font.html#deriveFont (float)) и ответ от Avrom. [deriveFont (int)] (http://docs.oracle.com/javase/6/docs/api/java/awt/Font.html#deriveFont (int)) применяет _style_ (кодируется как значение 'int') к шрифту. –

6

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

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

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

5

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

Java -Dswing.plaf.metal.controlFont = Диалог-50 YourMainClass

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

+0

+1 для параметризации Swing – akarnokd

7

Я интерпретировал этот вопрос как «Как увеличить размер шрифта для 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)); 
       } 
      } 
     } 
    } 
} 
1

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

Лицо, стиль и размер шрифта в приложении 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))); 
Смежные вопросы