java - 如何仅更改 swing 应用程序的所有字体的大小?

标签 java swing fonts

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

有没有办法更改大小,而不更改字体名称和样式? (将所有内容变成粗体同样是残暴的)。

最佳答案

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

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

关于java - 如何仅更改 swing 应用程序的所有字体的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42572339/

相关文章:

Java Swing - 检测文档中的更改

Java只addMouseListener一次

html - 使用字体的实际像素高度将文本与 CSS 垂直对齐?

fonts - 如何向 Jekyll 网站添加自定义本地字体?

java - 创建 fragment 后如何更改 fragment 布局

java - 反序列化以对象 ID 作为对象名称的 JSON 对象列表

java - 在jsp中找不到setter

java - runOnChange=false 但 csv 中的更改给出了校验和错误

java - 如何将 CaretEvent.getDot() 转换为直角坐标?

pdf - PDF 规范中 "base 14"字体的字体度量