在 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 javax.swing.*;
import java.awt.*;
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 javax.swing.*;
import java.awt.*;
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 javax.swing.*;
import java.awt.*;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
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