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); }