[英]how to set font weight in Java for Swing components
我想為 JFrame 對話框上的組件設置不同的字體粗細。 我該怎么做呢?
在下面的 Java 語句中
setFont(new Font("Dialog", Font.BOLD, 12));
當我使用 Font.BOLD 時它太粗了,當我使用 Font.Plain 時它太簡單了。 我想要介於兩者之間的東西。
welle部分正確。 您可以使用TextAttributes來獲取字體:
Map<TextAttribute, Object> attributes = new HashMap<>();
attributes.put(TextAttribute.FAMILY, Font.DIALOG);
attributes.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_SEMIBOLD);
attributes.put(TextAttribute.SIZE, 12);
label.setFont(Font.getFont(attributes));
更好的方法是通過外觀從Swing組件上安裝的字體派生您的字體:
Font font = label.getFont();
font = font.deriveFont(
Collections.singletonMap(
TextAttribute.WEIGHT, TextAttribute.WEIGHT_SEMIBOLD));
label.setFont(font);
這將保留字體的系列和大小,出於可讀性原因,用戶可能已在其桌面首選項中設置了該字體的大小。
也許我錯了,但我認為類Font只有Bold,但是你可以在數字之后改變
setFont(new Font("Dialog", Font.BOLD, 12));
setFont(new Font("Dialog", Font.plain, 27));
但是在類java.awt.font.TextAttribute
你有WEIGHT_BOLD和WEIGHT_SEMIBOLD ......
解決方案是按名稱加載字體的變體,例如:
Font font = new Font("Segoe UI Semibold", Font.PLAIN, 12);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.