2017-03-03 73 views
1

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

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

有没有办法来改变大小,而不改变字体名称和风格? (把所有的事情都变成大胆的同样是残酷的)。

+1

你的意思是这样[此例如(http://stackoverflow.com/questions/34149453/java-swing-application-too-small-in-hidpi-computers/34152675#34152675)? - 这只会影响外观和感觉设置,如果你自己直接将字体应用到组件上,那么我建议使用'.font'键将它存储在UIManager中 – MadProgrammer

回答

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)); 
     } 
    } 
} 
相关问题