在 Java 中使用 setFont
- 
          
            在 JFrame 中使用 setFont()設定新字型
- 
          
            使用 setFont()和getFont().deriveFont()在現有字型中設定樣式
- 
          
            使用 setFont()和Font.createFont()設定自定義字型
 
在本文中,我們將學習如何使用從 javax.swing.JFrame 類中的 java.awt.Container 繼承的 setFont() 方法。顧名思義,該函式將字型設定為 JFrame 的元件。
在 JFrame 中使用 setFont() 設定新字型
    
在這個例子中,我們為 JFrame 元件設定了一種新字型。
首先,我們建立一個 JFrame 物件和兩個 JLabel 型別的標籤。我們用它們的文字初始化標籤。
現在我們建立一個名為 myFont1 的 Font 物件,在建構函式中,我們傳遞三個引數,第一個是我們要設定的字型,第二個是可以使用 Font 類呼叫的字型樣式,以及最後一個引數是 int 型別值的字型大小。
我們建立另一個 Font 物件,myFont2,併為它設定一個不同的字型值。我們使用 JLabel 物件呼叫 setFont() 函式並將 Font 物件傳遞給它們。
之後,我們使用 setBounds() 函式設定元件的位置和大小,並使用 add() 將它們新增到 JFrame。最後,我們設定 JFrame 的大小和可見性。
import java.awt.*;
import javax.swing.*;
public class Main {
  public static void main(String[] args) {
    JFrame jFrame = new JFrame("Set Font Example");
    JLabel jLabel1, jLabel2;
    jLabel1 = new JLabel("Label with Serif Font");
    jLabel2 = new JLabel("Label with Arial Font");
    Font myFont1 = new Font("Serif", Font.BOLD, 12);
    jLabel1.setFont(myFont1);
    Font myFont2 = new Font("Arial", Font.BOLD, 12);
    jLabel2.setFont(myFont2);
    jLabel1.setBounds(80, 100, 120, 30);
    jLabel2.setBounds(80, 80, 120, 30);
    jFrame.add(jLabel1);
    jFrame.add(jLabel2);
    jFrame.setSize(300, 300);
    jFrame.setLayout(null);
    jFrame.setVisible(true);
  }
}
輸出:

使用 setFont() 和 getFont().deriveFont() 在現有字型中設定樣式
在前面的示例中,我們看到了如何使用 setFont() 設定新字型,但我們也可以使用此方法為 JFrame 元件的現有字型設定新樣式。
為此,我們首先使用 component.getFont() 獲取元件的字型,然後呼叫接受我們想要應用的樣式的 deriveFont() 函式。我們通過 Font.ITALIC 使 JLabel 上的字型變為斜體。
import java.awt.*;
import javax.swing.*;
public class Main {
  public static void main(String[] args) {
    JFrame f = new JFrame("Set Font Example");
    JLabel jLabel1;
    jLabel1 = new JLabel("Label with Italic Style");
    jLabel1.setFont(jLabel1.getFont().deriveFont(Font.ITALIC));
    jLabel1.setBounds(80, 100, 120, 30);
    f.add(jLabel1);
    f.setSize(300, 300);
    f.setLayout(null);
    f.setVisible(true);
  }
}
輸出:

使用 setFont() 和 Font.createFont() 設定自定義字型
在這個例子中,我們設定了一個自定義字型,這與我們已經在類中設定字型的第一個程式不同。
為了獲取自定義字型,我們下載它並將其儲存在我們專案目錄的根目錄中。我們在這個例子中使用 oswald.ttf 字型檔案。
我們建立一個 JLabel 並初始化它以獲取我們稱為 BufferedInputStream 的字型檔案,並傳遞一個 FileInputStream 的物件,該物件將字型檔案的路徑作為引數。現在我們得到了一個 InputStream 物件。
要建立新字型,我們從 Font 類呼叫 createFont(),並將字型資源型別作為第一個引數傳遞,將 InputStream 作為第二個引數傳遞。我們使用 deriveFont() 方法將自定義字型設定為 JLabel 元件。
畢竟,現在我們將元件新增到 JFrame。輸出顯示自定義字型。
package sample;
import java.awt.*;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.swing.*;
public class Main {
  public static void main(String[] args) {
    JFrame f = new JFrame("Set Font Example");
    JLabel jLabel;
    jLabel = new JLabel("Label with a Custom Font");
    try {
      InputStream inputStream = new BufferedInputStream(new FileInputStream("oswald.ttf"));
      Font font = Font.createFont(Font.TRUETYPE_FONT, inputStream);
      jLabel.setFont(font.deriveFont(Font.BOLD, 12f));
    } catch (FontFormatException | IOException e) {
      e.printStackTrace();
    }
    jLabel.setBounds(80, 100, 120, 30);
    f.add(jLabel);
    f.setSize(300, 300);
    f.setLayout(null);
    f.setVisible(true);
  }
}
輸出:

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn