【问题标题】:Are there any built-in methods in Java to increase Font size?Java中是否有任何内置方法来增加字体大小?
【发布时间】:2009-06-25 13:19:14
【问题描述】:

Java中有没有增加字体大小的内置方法?

【问题讨论】:

  • 您能否指定在什么情况下需要增加字体大小?

标签: java swing


【解决方案1】:

Font 类允许您指定字体大小。

所以,要创建字体,您可以这样做:

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

fontSize 参数将确定Font 的大小。

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

Font biggerFont = existingFont.deriveFont(bigNumber);

【讨论】:

  • 注意:你需要指定bigNumber是一个浮点数,否则你会触发deriveFont(int style)重载。 IE。 existingFont.deriveFont(100f);.
【解决方案2】:

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

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

newSize 是一个浮点数,不是一个整数。正如其他人指出的那样,这在 JavaDoc for Font 中有很好的记录

【讨论】:

  • +1。 @Raji:此外,如果您想以这种方式增加 GUI 组件的字体大小,您可以在保留字体集和格式的同时做到这一点。例如:myLabel.setFont(myLabel.getFont().deriveFont(20));然后,您可以实现一个递归算法,该算法在整个组件层次结构上执行此操作。只是一个想法。
  • newSize 必须float,而不是int。请参阅 deriveFont(float) 并从 Avrom 回答。 deriveFont(int)style(编码为 int 值)应用于字体。
【解决方案3】:

假设您要更改特定JLabel 的字体大小,您可以这样做:

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

确保newSizefloat 而不是int

【讨论】:

    【解决方案4】:

    我将此问题解释为“如何全面增加 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));
                    }
                }
            }
        }
    }
    

    【讨论】:

      【解决方案5】:

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

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

      在本例中,您将默认字体设置为“Dialog”,大小为 50。

      【讨论】:

        【解决方案6】:

        这个问题太模糊了,无法给出一个好的答案。但我认为您希望系统地增加应用程序中的字体大小。

        Java Swing 应用程序中的字体、样式和大小是通过 LookAndFeel 机制控制的。如果要将更改应用于给定类型的所有 Swing 组件,则需要更改外观中的字体。

        查看UIManager 示例。

        以下是为某些 UI 组件全局更改字体的方法:

        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)));
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-04-03
          • 1970-01-01
          • 2016-11-26
          • 2017-04-15
          • 2018-07-16
          • 2015-02-01
          • 1970-01-01
          相关资源
          最近更新 更多