回答編集履歴

2 追記部分を訂正

KSwordOfHaste

KSwordOfHaste score 18166

2017/05/10 07:08  投稿

リストじゃなくTableViewですね?
TableViewへ表示する行単位のデータのことをTableViewのモデルと呼んだりします(一般のMVCモデルでのMです)が、質問者さんのコードではモデルはButtonPropクラスですね。このモデルの中でTableView上で表示・編集したいものをJavaFXプロパティーとして実装してください。そしてそのプロパティーをTableViewの各カラムのcellValueFactoryを設定することでテーブルカラムと結び付けてください。
結び付け方は[PropertyValueFactoryリファレンス](http://docs.oracle.com/javase/jp/8/javafx/api/javafx/scene/control/cell/PropertyValueFactory.html)を参照するとよいでしょう。
この方法を用いればテーブル上のセルの編集をすると、その結果が自動的にモデルのJavaFXプロパティーの値へ反映されます。TableViewのリファレンスの説明も熟読することをお勧めします。
なお、javafx.scene.Node(本件の場合Buttonの派生)をモデルとして直接用いるのはお勧めできません。モデルはモデル、ビューはビューとして設計しましょう。必要ならモデルとButtonの間の関連を別途管理するとよいと思います。
---
追記:質問コメントにある「モデルの考え方」について追記します。
ボタンを押すことで表示したいモデルがPropertiesのようなものとします。Propertiesは任意の数のキーと値の集合ですね。Propertiesを用いるならボタンによって「キーの種類は様々に変わる」ことを前提に考えるのが自然だと思います。とすればPropertiesを「表示すべき属性名が固定的な」TableViewへ簡単かつ自然にマッピングできないと思います。
例:(JSON形式でPropertiesを表現しています)
Button1: {"key1": "11", "key2": "12"}
Button2: {"key1": "21", "key2": "22"}
このようなモデルのように属性が固定("key1"と"key2")ならテーブルのカラムも"key1"と"key2"とすればモデルインスタンス一つをTableViewの1行に自然にマッピングできますが、
Button1: {"key1": "1", "key2": "2"}
Button2: {"key3": "3", "key4": "3"}
このようなモデルに対してTableViewのカラム名を決められませんよね?
質問者さんはPropertiesをテーブルへどのように表示したいのですか?
|key1|key2|key3|key4|
|:--|:--|:--|:--|
|1|2|||
|||3|4|
でしょうか?それとも以下のようなイメージですか?
|key|value|
|:--|:--|
|key1|1|
|key2|2|
|key3|3|
|key4|4|
いずれにしても「TableViewへ表示するマッピングは自然とはいえない」と思います。
いずれにしても「TableViewへ表示するマッピングは自然とはいえない」と思います。
**実装方法云々の前に**この点を明確にしておかないと**話がぶれて**しまいます。
1 追記

KSwordOfHaste

KSwordOfHaste score 18166

2017/05/10 07:03  投稿

リストじゃなくTableViewですね?
TableViewへ表示する行単位のデータのことをTableViewのモデルと呼んだりします(一般のMVCモデルでのMです)が、質問者さんのコードではモデルはButtonPropクラスですね。このモデルの中でTableView上で表示・編集したいものをJavaFXプロパティーとして実装してください。そしてそのプロパティーをTableViewの各カラムのcellValueFactoryを設定することでテーブルカラムと結び付けてください。
結び付け方は[PropertyValueFactoryリファレンス](http://docs.oracle.com/javase/jp/8/javafx/api/javafx/scene/control/cell/PropertyValueFactory.html)を参照するとよいでしょう。
この方法を用いればテーブル上のセルの編集をすると、その結果が自動的にモデルのJavaFXプロパティーの値へ反映されます。TableViewのリファレンスの説明も熟読することをお勧めします。
なお、javafx.scene.Node(本件の場合Buttonの派生)をモデルとして直接用いるのはお勧めできません。モデルはモデル、ビューはビューとして設計しましょう。必要ならモデルとButtonの間の関連を別途管理するとよいと思います。
なお、javafx.scene.Node(本件の場合Buttonの派生)をモデルとして直接用いるのはお勧めできません。モデルはモデル、ビューはビューとして設計しましょう。必要ならモデルとButtonの間の関連を別途管理するとよいと思います。
---
追記:質問コメントにある「モデルの考え方」について追記します。
ボタンを押すことで表示したいモデルがPropertiesのようなものとします。Propertiesは任意の数のキーと値の集合ですね。Propertiesを用いるならボタンによって「キーの種類は様々に変わる」ことを前提に考えるのが自然だと思います。とすればPropertiesを「表示すべき属性名が固定的な」TableViewへ簡単かつ自然にマッピングできないと思います。
例:(JSON形式でPropertiesを表現しています)
Button1: {"key1": "11", "key2": "12"}
Button2: {"key1": "21", "key2": "22"}
このようなモデルのように属性が固定("key1"と"key2")ならテーブルのカラムも"key1"と"key2"とすればモデルインスタンス一つをTableViewの1行に自然にマッピングできますが、
Button1: {"key1": "1", "key2": "2"}
Button2: {"key3": "3", "key4": "3"}
このようなモデルに対してTableViewのカラム名を決められませんよね?
質問者さんはPropertiesをテーブルへどのように表示したいのですか?
|key1|key2|key3|key4|
|:--|:--|:--|:--|
|1|2|||
|||3|4|
でしょうか?それとも以下のようなイメージですか?
|key|value|
|:--|:--|
|key1|1|
|key2|2|
|key3|3|
|key4|4|
いずれにしても「TableViewへ表示するマッピングは自然とはいえない」と思います。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る