JavaFXのTableViewコンポーネント操作ガイド

JavaFXのTableViewコンポーネント操作ガイド

JavaFXは、クロスプラットフォームなデスクトップアプリケーションおよびリッチインターネットアプリケーション(RIA)を開発するための強力なクライアントサイドアプリケーションプラットフォームです。JavaFXにおけるTableViewはデータを表形式で表示するためのUIコンポーネントであり、SwingのJTableに相当します。この記事ではJavaFXのTableViewコンポーネントの利用方法について詳しく解説し、コード例も提供します。

TableViewの概要

TableViewは複数の列と行を持つデータを表形式で表示するビューです。ユーザーが行と列を使ってデータを閲覧できるだけでなく、データの並び替えやフィルタリング機能も備えています。

基本的な使い方

まず、JavaFX関連のパッケージをインポートする必要があります:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Stage;

次に、シンプルなTableViewの実装例を示します:

public class TableDisplayDemo extends Application {
    @Override
    public void start(Stage mainStage) {
        // TableViewの生成
        TableView<UserData> tableComponent = new TableView<>();
        
        // 列の定義
        TableColumn userNameColumn = new TableColumn<>("氏名");
        userNameColumn.setCellValueFactory(new PropertyValueFactory<>("userName"));
        
        TableColumn userAgeColumn = new TableColumn<>("年齢");
        userAgeColumn.setCellValueFactory(new PropertyValueFactory<>("userAge"));
        
        // 列をTableViewに追加
        tableComponent.getColumns().addAll(userNameColumn, userAgeColumn);
        
        // データをTableViewに設定
        tableComponent.getItems().addAll(
                new UserData("山田太郎", 25),
                new UserData("佐藤花子", 32),
                new UserData("鈴木一郎", 28)
        );
        
        // シーンの作成とステージ設定
        Scene displayScene = new Scene(tableComponent, 400, 300);
        mainStage.setTitle("TableView デモ");
        mainStage.setScene(displayScene);
        mainStage.show();
    }
    
    public static void main(String[] arguments) {
        launch(arguments);
    }
    
    static class UserData {
        private final String userName;
        private final int userAge;
        
        public UserData(String name, int age) {
            this.userName = name;
            this.userAge = age;
        }
        
        public String getUserName() {
            return userName;
        }
        
        public int getUserAge() {
            return userAge;
        }
    }
}

高度な機能

単純なデータ表示に加えて、TableViewはソート機能やフィルタリング機能などの高度な機能もサポートしています。例えば、各列にカスタム比較ロジックを追加してソート機能を実現できます:

userNameColumn.setComparator((data1, data2) -> 
    data1.getUserName().compareTo(data2.getUserName()));
userAgeColumn.setComparator((data1, data2) -> 
    Integer.compare(data1.getUserAge(), data2.getUserAge()));

さらに、TableViewにはカスタムセルレンダラーを追加することで、より複雑なデータ表示ロジックを実装することも可能です。

タグ: JavaFX TableView ui-components desktop-applications propertyvaluefactory

8月2日 16:22 投稿