ใน JavaFX โหนดข้อความแทนด้วยคลาส javafx.scene.text.Text โดยค่าเริ่มต้นข้อความที่สร้างโดย JavaFX จะเป็นดังนี้:

การตั้งค่าฟอนต์ที่ต้องการให้ Text node
สามารถตั้งค่าฟอนต์ที่ต้องการให้ text node ใน JavaFX ได้ด้วยเมธอด setFont() เมธอดนี้รับออบเจ็กต์ของคลาส javafx.scene.text.Font
คลาส Font แทนฟอนต์ใน JavaFX คลาสนี้มีเมธอด font() หลายรูปแบบดังนี้:
font(double size)
font(String family)
font(String family, double size)
font(String family, FontPosture posture, double size)
font(String family, FontWeight weight, double size)
font(String family, FontWeight weight, FontPosture posture, double size)
โดยที่:
- size (double) แทนขนาดฟอนต์
- family (string) แทน họฟอนต์ที่ต้องการนำไปใช้ สามารถดูชื่อ font families ที่ติดตั้งได้ด้วยเมธอด getFamilies()
- weight แทนความหนาของฟอนต์ (ค่าคงที่ของ FontWeight Enum: BLACK, BOLD, EXTRA_BOLD, EXTRA_LIGHT, LIGHT, MEDIUM, NORMAL, SEMI_BOLD, THIN)
- posture แทนท่าทางของฟอนต์ (ค่าคงที่ของ FontPosture Enum: REGULAR, ITALIC)
เมธอดทั้งหมดเป็น static และคืนค่า Font object ดังนั้นเพื่อตั้งค่าฟอนต์ให้ text node:
- สร้างอินสแตนซ์ Text class
- ตั้งค่าคุณสมบัติพื้นฐาน เช่น ตำแหน่งและข้อความ ใช้ setter หรือส่งให้คอนสตรัคเตอร์
- สร้าง Font object ด้วยเมธอด font() หนึ่งในรูปแบบ
- ตั้งค่าฟอนต์ที่สร้างให้ text ด้วย setFont()
- เพิ่มโหนดที่สร้างเข้าไปใน Group object
ตัวอย่าง
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.Scanner;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
public class SettingFont extends Application {
public void start(Stage stage) throws FileNotFoundException {
// อ่านเนื้อหาไฟล์
InputStream inputStream = new FileInputStream("D:\\sample.txt");
Scanner sc = new Scanner(inputStream);
StringBuffer sb = new StringBuffer();
while(sc.hasNext()) {
sb.append(" " + sc.nextLine() + "\n");
}
String str = sb.toString();
// สร้าง Text object
Text text = new Text();
// ตั้งค่าคุณสมบัติพื้นฐาน
text.setText(str);
text.setX(10.0);
text.setY(25.0);
text.setWrappingWidth(580);
// สร้าง Font object
String font_name = Font.getFamilies().get(25);
System.out.println("Font Name:" + font_name);
int size = 25;
Font font = Font.font(font_name, FontWeight.BOLD, FontPosture.REGULAR, size);
// ตั้งค่าฟอนต์ให้ text
text.setFont(font);
// ตั้งค่า Stage
Group root = new Group(text);
Scene scene = new Scene(root, 595, 300, Color.BEIGE);
stage.setTitle("Displaying Text");
stage.setScene(scene);
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
sample.txt
สมมติเนื้อหา sample.txt ดังนี้:
JavaFX is a Java library used to build Rich Internet Applications. The applications written using this library can run consistently across multiple platforms. The applications developed using JavaFX can run on various devices such as Desktop Computers, Mobile Phones, TVs, Tablets, etc.. To develop GUI Applications using Java programming language, the programmers rely on libraries such as Advanced Windowing Tool kit and Swing. After the advent of JavaFX, these Java programmers can now develop GUI applications effectively with rich content.
ผลลัพธ์
Font Name: Brush Script MT
และแสดงหน้าต่างดังภาพ:
