Java中是否有任何内置方法可以增加字体大小?

12 java swing

Java中是否有任何内置方法可以增加字体大小?

jjn*_*guy 17

Font类允许您指定的字体大小.

因此,要创建字体,您可以执行以下操作:

Font f = new Font("serif", Font.PLAIN, fontSize);
Run Code Online (Sandbox Code Playgroud)

fontSize参数将决定您的大小Font.

您实际上无法更改现有Font对象的大小.实现类似效果的最佳方法是使用该deriveFont(size)方法创建一个几乎相同的新Font大小.

Font biggerFont = existingFont.deriveFont(bigNumber);
Run Code Online (Sandbox Code Playgroud)

  • 注意:你需要指定 `bigNumber` 是一个浮点数,否则你会触发 `deriveFont(int style)` 重载。即`existingFont.deriveFont(100f);`。 (4认同)

tdd*_*key 10

您可以使用以下方法派生具有不同大小的新Font:

Font original = // some font
Font bigger = original.deriveFont(newSize);
Run Code Online (Sandbox Code Playgroud)

其中newSize是float,而不是 int.正如其他人所指出的,这在JavaDoc for Font中有详细记载

  • 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`值)到字体. (3认同)
  • +1。@Raji:此外,如果您想以此方式增加GUI组件上的字体大小,则可以在保留字体集和格式的同时做到这一点。例如:myLabel.setFont(myLabel.getFont()。deriveFont(20)); 然后,您可以实现一个递归算法,该算法在整个组件层次结构上执行此操作。只是一个主意。 (2认同)

Avr*_*rom 7

假设您要更改特定的字体大小JLabel,您可以执行以下操作:

label.setFont(label.getFont().deriveFont(newSize));
Run Code Online (Sandbox Code Playgroud)

确保newSizefloat不是int.


Car*_*rlG 7

我将这个问题解释为"如何增加Swing的字体大小".我不知道有任何内置方法可以做到这一点,但您可以通过在创建任何Swing组件之前在启动时修改UIManager类中的值来自己完成.

我通过将一个参数传递到我的应用程序中来实现这一点,我将其用作乘数.如果我传入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));
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


cd1*_*cd1 6

你可以在运行应用程序时设置属性swing.plaf.metal.controlFont:

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

在此示例中,您将默认字体设置为"Dialog",大小为50.