[java] JFoenix를 사용하여 실시간 데이터 표시하기

개요

JFoenix는 JavaFX를 위한 자바 라이브러리로, Material Design 스타일을 적용할 수 있도록 도와줍니다. 이 글에서는 JFoenix를 사용하여 실시간 데이터를 표시하는 방법에 대해 알아보겠습니다.

JFoenix 설정하기

먼저, 프로젝트에 JFoenix를 추가해야 합니다. Maven이나 Gradle과 같은 빌드 도구를 사용하는 경우, 아래의 의존성을 추가하면 됩니다.

<!-- for Java 8 -->
<dependency>
    <groupId>com.jfoenix</groupId>
    <artifactId>jfoenix</artifactId>
    <version>8.0.10</version>
</dependency>

<!-- for Java 11 -->
<dependency>
    <groupId>com.jfoenix</groupId>
    <artifactId>jfoenix</artifactId>
    <version>9.0.10</version>
</dependency>

FXML 파일 작성하기

FXML 파일을 사용하여 UI를 설계할 것입니다. 예를 들어, 실시간 데이터를 나타내는 LineChart를 만들어보겠습니다. 다음은 line_chart.fxml 파일의 내용입니다.

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.chart.LineChart?>
<?import javafx.scene.chart.NumberAxis?>
<?import javafx.scene.chart.XYChart?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
    <children>
        <LineChart fx:id="lineChart" layoutX="50.0" layoutY="50.0" prefHeight="300.0" prefWidth="500.0">
            <xAxis>
                <NumberAxis side="BOTTOM" />
            </xAxis>
            <yAxis>
                <NumberAxis side="LEFT" />
            </yAxis>
        </LineChart>
    </children>
</AnchorPane>

Controller 클래스 작성하기

FXML 파일을 참조하는 Controller 클래스를 작성해야 합니다. 이 클래스에서는 LineChart에 데이터를 추가하고, 실시간으로 업데이트하는 로직을 구현합니다.

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.XYChart;

import java.net.URL;
import java.util.ResourceBundle;

public class LineChartController implements Initializable {
    @FXML
    private LineChart<Number, Number> lineChart;

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        XYChart.Series<Number, Number> series = new XYChart.Series<>();

        // 임의의 데이터 추가
        series.getData().add(new XYChart.Data<>(1, 10));
        series.getData().add(new XYChart.Data<>(2, 20));
        series.getData().add(new XYChart.Data<>(3, 30));

        lineChart.getData().add(series);
    }
}

Main 클래스 작성하기

실행 가능한 Main 클래스를 작성합니다. Main 클래스에서는 FXML 파일을 로드하고 컨트롤러를 설정합니다.

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        FXMLLoader loader = new FXMLLoader(getClass().getResource("line_chart.fxml"));
        AnchorPane root = loader.load();

        LineChartController controller = loader.getController();
        // 필요한 경우 컨트롤러에 추가적인 설정 작업을 할 수 있습니다.

        primaryStage.setScene(new Scene(root));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

실행 결과 확인하기

위의 Main 클래스를 실행하면, JFoenix의 LineChart가 보여지며 초기 데이터가 표시됩니다. 이제 필요에 따라 데이터를 추가하고 업데이트하는 기능을 구현할 수 있습니다.

결론

JFoenix를 사용하여 실시간 데이터를 표시하는 방법에 대해 알아보았습니다. JFoenix는 JavaFX에 Material Design 스타일을 적용할 수 있는 강력한 도구이므로, 관련된 프로젝트에서 활용해보시기 바랍니다.

참고 자료