質問: new PropertyValueFactory('code'); が 効いてないのか? その辺りも ちゃんと理解できてません よろしくお願いいたします。
回答: TableColumnはシーングラフ上に出現しない(Nodeではない)のでlookupでは取れないのだと思います。(まぎらわしいのですがシーングラフ上にはTableColumnのidと同じidのTableColumnHeaderというNodeが生成されています。CSSを指定する場合にはこちらに対してidでスタイルを指定することができるはずですが、いずれにせよ本件の目的ではこのNodeがlookupに返されてもしかたありませんね。) TableColumnは以下のようにすれば取得できます。(とりあえずindex指定で得る方法です) var c_code = TBL000.getColumns().get(0) 問題はcellValueFactoryの設定です。 TableView.getItems()とするとちゃんと2要素になっているので何らかのオブジェクトは設定されてますが、 var c_code = TBL000.getColumns().get(0) c_code.cellValueFactory = new PropertyValueFactory('code') とやっても何も表示されませんでした。PropertyValueFactoryはJavaFXの規約に従ったプロパティー(javafx.beans.property.XxxPropertyによる)が実装されているオブジェクトに対して使うユーティリティークラスですが、おそらくjavascriptのプロパティーをJavaFXプロパティーとして扱うような仕組みはないのだと思います。 そこで非JavaFXプロパティーを扱う方法を試してみたところうまくいきましたのでご紹介します。なおlookupはできないもののTableColumnをインデックスで取得するよりはidで取得する方が多少ましなのでgetColumnByIdという関数でそれをするようにしてみました。 ``` var getColumnById = function(tableView, id) { return tableView.getColumns().stream() .filter(function(col) col.id == id).findFirst().get() } var c_code = getColumnById(TBL000, 'c_code') c_code.cellValueFactory = function(p) { return new ReadOnlyObjectWrapper(p.getValue().code) } var c_name = getColumnById(TBL000, 'c_name') c_name.cellValueFactory = function(p) { return new ReadOnlyObjectWrapper(p.getValue().name) } ... ``` 余談: JavaにてFXMLをロードするなら@FXMLアノテーションとfx:idによるバインディングが便利ですがJavascriptからロードする際にlookupを使うならFXML上でのfx:idの指定は使いようがなさそうなので省略してもいいかも知れません。もちろん同じFXMLをJavaにてロードするためにfx:idとidの両方残しておくのもかまわないと思います。