簡體   English   中英

如何在 Java 中為 Swing 組件設置字體粗細

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM