JavaFX에서 텍스트 노드는 javafx.scene.text.Text 클래스로 표현됩니다. 별도로 글꼴을 지정하지 않으면 JavaFX가 생성한 텍스트는 다음과 같은 기본 모양으로 화면에 표시됩니다.

텍스트 노드에 원하는 글꼴 설정하기
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)
font() 메서드의 주요 매개변수
size(double): 글꼴의 크기를 나타냅니다.
family(String): 텍스트에 적용할 글꼴 패밀리(서체군)의 이름입니다. getFamilies() 메서드를 호출하면 시스템에 설치된 글꼴 패밀리 이름 목록을 얻을 수 있습니다.
weight: 글꼴의 굵기입니다. FontWeight 열거형 상수(BLACK, BOLD, EXTRA_BOLD, EXTRA_LIGHT, LIGHT, MEDIUM, NORMAL, SEMI_BOLD, THIN) 중 하나를 사용합니다.
posture: 글꼴의 자세입니다. FontPosture 열거형 상수(REGULAR, ITALIC) 중 하나를 사용합니다.
이 메서드들은 모두 static으로 선언되어 있으며 Font 객체를 반환합니다. 따라서 텍스트 노드에 글꼴을 설정하는 전체 과정은 다음 순서로 진행됩니다.
- Text 클래스를 인스턴스화합니다.
- setter 메서드를 사용하거나 생성자에 값을 전달하여 위치(x, y 좌표), 표시할 문자열 등 기본 속성을 설정합니다.
- font() 메서드 중 하나를 사용해 Font 객체를 생성합니다.
- setFont() 메서드로 생성한 글꼴을 텍스트에 적용합니다.
- 생성한 노드를 Group 객체에 추가합니다.
예제 코드
다음은 텍스트 파일의 내용을 읽어 화면에 출력하고, 시스템에 설치된 글꼴 중 하나를 선택해 적용하는 전체 예제입니다.
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 객체 생성
Text text = new Text();
// 텍스트의 기본 속성 설정
text.setText(str);
text.setX(10.0);
text.setY(25.0);
text.setWrappingWidth(580);
// Font 객체 생성
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.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
콘솔에는 위와 같이 선택된 글꼴 이름이 출력되며, 프로그램을 실행하면 해당 글꼴이 적용된 다음과 같은 창이 함께 표시됩니다.
