JavaFX | FXML GUI 디자인 | FXML 사용

FXML 사용한 간단한 샘플을 작성해 보자. 아래 코드가 FXML 예제이다.

<?xml version="1.0" encoding="UTF-8"?>
 
<?import javafx.scene.text.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
 
<BorderPane
    xmlns="http://javafx.com/javafx/8"
    xmlns:fx="http://javafx.com/fxml/1">
    <top>
        <Label text="This is FXML!" />
    </top>
</BorderPane>

이것은 Label을 한개를 BorderPane에 추가한 단순한 것이다. 다음 내용을 설명은 아래와 같다.

<? import?> 태그

처음에 여러개의 문이 작성되어 있다. 사실 이것은 JavaFX Scene Builder에서 만들 때 자동으로 추가되는 것이다. Pane 및 컨트롤러 관계의 클래스를 대충 import 문장을 준비하고 있는 것이다.

<BorderPane> 태그

여기에서는 <BorderPane> 라는 태그를 있고, 이 가운데에 <Label> 태그를 작성되어 있다. 이를 잘 보면 바로 작성 된 것이 아니라, <Top>라는 태그에 둘려 싸여 있는 것을 알 수 있다. 이것은 <BorderPane> 특유의 것으로, 결합되는 위치를 나타내는 태그에서 컨트롤의 태그를 작성하도록 되어있는 것이다. 준비되어 있는 것은 다음의 5가지가 있다.

<BorderPane>의 위치 태그

<Top> <Bottom> <Right> <Left> <Ceter>

<Label> 태그

<Label> 태그에서 text라는 속성에 표시할 텍스트를 지정한다. 컨트롤의 속성은 이 처럼 속성을 태그에 작성할 수 있다. text=“OO"라는 것은 “setText(“OO”)“같은 기능을 하고 있다고 생각하면 이해하기 쉬울 것이다.

이와 같이 컨트롤으로 속성를 설정하는 “setOO(값)” 처리는 그대로 컨트롤 태그의 “OO=값"와 같은 형태로 고쳐 쓸 수 있는 것이 많다. 이것은 Label뿐만 아니라 컨트롤 전반이라고 할 수 있는 것이다.