JavaFX の setCellValueFactory メソッド

MD Aminul Islam 2024年2月15日
JavaFX の setCellValueFactory メソッド

TableView はあらゆる UI の非常に重要な部分です。 ユーザーのデータを視覚化するのに役立ちます。 テーブルを操作するときは、テーブルにセルを作成するための最も一般的なメソッド setCellValueFactory() を使用します。

この記事では、この方法について説明し、説明付きの例を見ていきます。

JavaFX で setCellValueFactory メソッドを使用する

以下の例では、いくつかのデータを含む単純なテーブルを作成しました。 この例のコードは次のようになります。

// Importing all necessary packages

import javafx.application.Application;
import javafx.beans.property.*;
import javafx.collections.*;
import javafx.event.*;
import javafx.geometry.Insets;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;

public class FXtable extends Application {
  private TableView table = new TableView(); // Creating a table with a static class "Person"
  private final ObservableList data =
      FXCollections.observableArrayList(); // Creating an observable list

  private void initData() { // Method that set data to table
    data.setAll(
        // All table datas
        new Person("Alen", "Smith", "alen.smith@example.com"),
        new Person("Stefen", "Johnson", "stefen@example.com"),
        new Person("Uri", "Gagrin", "uri@example.com"),
        new Person("Alex", "Jones", "alex@example.com"),
        new Person("Hexa", "Brown", "hexa@example.com"));
  }

  public void start(Stage stage) {
    initData(); // Set initial data to table

    stage.setTitle("JavaFx Table View"); // Set the title of the table
    stage.setWidth(450); // Set the width
    stage.setHeight(500); // Set the height

    Label label = new Label("Simple Address Table"); // Create a label
    label.setFont(new Font("Arial", 20)); // Set the font and font size

    TableColumn FirstNameCol = new TableColumn("First Name"); // Create a column named "First Name"
    FirstNameCol.setMinWidth(100); // Set the minimum column width to 100
    FirstNameCol.setCellValueFactory(
        new PropertyValueFactory("firstName")); // Populate all the column data for "First Name"

    TableColumn LastNameCol = new TableColumn("Last Name"); // Create a column named "Last Name"
    LastNameCol.setMinWidth(100); // Set the minimum column width to 100
    LastNameCol.setCellValueFactory(
        new PropertyValueFactory("lastName")); // Populate all the column data for "Last Name"

    TableColumn EmailColl = new TableColumn("Email"); // Create a column named "Email"
    EmailColl.setMinWidth(200); // Set the minimum column width to 200
    EmailColl.setCellValueFactory(
        new PropertyValueFactory("email")); // Populate all the column data for "Last Name"

    table.setItems(data);
    table.getColumns().addAll(FirstNameCol, LastNameCol, EmailColl); // Add columns to table
    table.setPrefHeight(300); // Set table height

    final VBox vbox = new VBox(10); // Create a VBox
    vbox.setPadding(new Insets(10, 0, 0, 10)); // Add padding
    vbox.getChildren().addAll(label, table); // Organize the VBox with label and table

    stage.setScene(new Scene(new Group(vbox))); // Add the VBox to scene
    stage.show(); // Visualize the scene
  }

  public static class Person { // Class for creating the person table
    private StringProperty FirstName;
    private StringProperty LastName;
    private StringProperty email;

    private Person(String FName, String LName, String email) {
      this.FirstName = new SimpleStringProperty(FName);
      this.LastName = new SimpleStringProperty(LName);
      this.email = new SimpleStringProperty(email);
    }

    public String getFirstName() { // Method to get First Name
      return FirstName.get();
    }
    public void setFirstName(String FName) { // Method to set First Name
      FirstName.set(FName);
    }
    public StringProperty FirstNameProperty() { // Method to add First Name property
      return FirstName;
    }
    public String getLastName() { // Method to get Last Name
      return LastName.get();
    }
    public void setLastName(String LName) { // Method to set Last Name
      LastName.set(LName);
    }
    public StringProperty lastNameProperty() { // Method to add Last Name property
      return LastName;
    }

    public String getEmail() { // Method to get Email
      return email.get();
    }
    public void setEmail(String inMail) { // Method to set Email
      email.set(inMail);
    }
    public StringProperty emailProperty() { // Method to add Email property
      return email;
    }
  }

  public static void main(String[] args) {
    launch(args);
  } // Launch the application.
}

各行の目的については、既にコード内でコメントしています。 ここでは、setCellValueFactory() 関数について説明します。

FirstNameCol.setCellValueFactory(new PropertyValueFactory("firstName"));LastNameCol.setCellValueFactory(new PropertyValueFactory("lastName"));、および EmailColl.setCellValueFactory(new PropertyValueFactory("email")); の行を使用します。 、テーブルにセルを作成するために setCellValueFactory() メソッドを使用しました。

ここでは、firstNamelastName、および email という名前の 3つの列を作成しました。 このメソッドは、単一のテーブル列内でテーブルのセルを設定する方法を指定します。

TableColumn.CellDataFeatures インスタンスを提供し、ObservableValue インスタンスを返します。 上記のサンプル コードをコンパイルして環境で実行すると、次の出力が得られます。

出力:

javafx setcellvaluefactory 出力

IDE がライブラリとパッケージの自動インクルードをサポートしていない場合は、コンパイルする前にこれらの必要なライブラリとパッケージを手動でインクルードする必要がある場合があることに注意してください。

著者: MD Aminul Islam
MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn

関連記事 - Java JavaFX