くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

JavaFXでTableViewを使ってみる

JavaFXでTableViewを使ってみたときの備忘録

Tableを作る

FXML

<TableView fx:id="edit_table" prefHeight="470.0">
    <columns>
        <TableColumn fx:id="col_name" text="名称" />
        <TableColumn fx:id="col_price_from" text="相場値From" />
        <TableColumn fx:id="col_price_to" text="相場値To" />
    </columns>
</TableView>

Entity

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
@AllArgsConstructor
public class ItemEntity {
    private String name;
    private long priceFrom;
    private long priceTo;
    private String imagePath;
}

Controller

@FXML private TableView<ItemEntity> edit_table;
@FXML private TableColumn<ItemEntity, String> col_name;
@FXML private TableColumn<ItemEntity, Long> col_price_from;
@FXML private TableColumn<ItemEntity, Long> col_price_to;

// TableViewを初期化する
private void setTableItems() {
    //Entityのリストを取得
    List<ItemEntity> itemList = ...; 
    
    //TableViewが扱えるリストに変換して設定
    ObservableList<ItemEntity> tableRecord = FXCollections.observableArrayList();
    itemList().forEach(tableRecord::add);
    edit_table.setItems(tableRecord);

    //TableのColumnとEntityのフィールドのマッピングを指定
    col_name.setCellValueFactory(new PropertyValueFactory<>("name"));
    col_price_from.setCellValueFactory(new PropertyValueFactory<>("priceFrom"));
    col_price_to.setCellValueFactory(new PropertyValueFactory<>("priceTo"));
}

// Recordを追加
private void onClickEditAdd(ItemEntity item) {
    edit_table.getItems().add(item);
}

参考にしたサイト様