【问题标题】:How do I change only the size of all the fonts of a swing application?如何仅更改 Swing 应用程序的所有字体的大小?
【发布时间】:2017-07-23 04:15:37
【问题描述】:

I've found this solution 更改整个应用程序的字体,但该应用程序有一些粗体和一些素色字体(如 JTables 中的字体)。使用那里描述的方法,一切都变得“简单”(在这种情况下,“TRUETYPE”),甚至是菜单。我想保留默认粗体。

    public static void main(String[] args) {
        setUIFont (new javax.swing.plaf.FontUIResource("VERDANA", Font.TRUETYPE_FONT, 14));
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    frame = new MainFrame();
                    toggleFrame(frame);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

有没有办法只改变大小,而不改变字体名称和样式? (把所有东西都加粗同样糟糕)。

【问题讨论】:

  • 你的意思是this for example? - 这只会影响外观设置,如果您自己将字体直接应用到组件,那么我建议使用.font 键将其存储在 UIManager 中

标签: java swing fonts


【解决方案1】:

您可以对该解决方案进行小幅修改。

public static void setUIFontSize(int newSize) {
    Enumeration<Object> keys = UIManager.getDefaults().keys();
    while (keys.hasMoreElements()) {
        Object key = keys.nextElement();
        Object value = UIManager.get(key);
        if (value != null
                && value instanceof javax.swing.plaf.FontUIResource) {
            FontUIResource oldFont = (FontUIResource) value;
            UIManager.put(key, oldFont.deriveFont((float) newSize));
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 2018-02-06
    • 2018-01-07
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多