{"id":1032,"date":"2015-10-16T16:47:27","date_gmt":"2015-10-16T08:47:27","guid":{"rendered":"http:\/\/blog.amjet.biz\/IT\/?p=1032"},"modified":"2015-10-19T11:14:01","modified_gmt":"2015-10-19T03:14:01","slug":"javafx-8-tableview-tips","status":"publish","type":"post","link":"https:\/\/blog.amjet.biz\/IT\/?p=1032","title":{"rendered":"JavaFX 8 TableView tips"},"content":{"rendered":"<p><strong>TableView \u7684\u6700\u5f8c\u4e00\u5217\u6c92\u6709\u51fa\u73fe<\/strong><\/p>\n<p>\u7528 SceneBuilder \u4fee\u6539 TableView -&gt; Layout -&gt; Pref Height\uff0c\u76ee\u524d\u9047\u904e\u9019\u500b\u6578\u5b57\u8a2d\u5927\u65bc container \u5143\u4ef6\u7684 height\uff0c\u7d50\u679c\u6700\u5f8c\u4e00\u5217\u7121\u6cd5 render \u51fa\u4f86<\/p>\n<p><strong>\u8cc7\u6599\u52a0\u9032 TableView \u7684 ObservableList \u4f46\u662f\u756b\u9762\u6c92\u6709\u986f\u793a<\/strong><\/p>\n<p>\u4e4b\u524d\u7684\u7248\u672c\u597d\u50cf\u8981\u7528 workaround \u4f86\u89e3\u6c7a\uff0c\u73fe\u5728\u7528 TableView \u7684 refresh() method \u5373\u53ef<\/p>\n<p><strong>\u8b8a\u66f4\u8cc7\u6599\u5217\u7684\u984f\u8272<\/strong><\/p>\n<p>mytable.setRowFactory(myRowFactory());<\/p>\n<p>private Callback myRowFactory() {<br \/>\nreturn new Callback&lt;TableView&lt;MyModel&gt;,TableRow&lt;MyModel&gt;&gt;() {<br \/>\npublic TableRow&lt;MyModel&gt; call(TableView&lt;MyModel&gt; tv) {<br \/>\nfinal TableRow&lt;MyModel&gt; row=new TableRow&lt;MyModel&gt;() {<br \/>\n@Override<br \/>\nprotected void updateItem(MyModel model, boolean empty) {<br \/>\nsuper.updateItem(model, empty);<br \/>\nif ( ! isWantedModel(model) ) {<br \/>\ngetStyleClass().removeAll(Collections.singleton(&#8220;myModelCSS&#8221;));<br \/>\n} else {<br \/>\ngetStyleClass().add(&#8220;myModelCSS&#8221;);<br \/>\n}<br \/>\n}<br \/>\n};<br \/>\nreturn row;<br \/>\n}<br \/>\n};<br \/>\n}<\/p>\n<p>[ratings]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>TableView \u7684\u6700\u5f8c\u4e00\u5217\u6c92\u6709\u51fa\u73fe \u7528 SceneBuilder \u4fee\u6539 TableView -&gt; Layout -&gt; Pref Height\uff0c\u76ee\u524d\u9047\u904e\u9019\u500b\u6578\u5b57\u8a2d\u5927\u65bc container \u5143\u4ef6\u7684 height\uff0c\u7d50\u679c\u6700\u5f8c\u4e00\u5217\u7121\u6cd5 render \u51fa\u4f86 \u8cc7\u6599\u52a0\u9032 TableView \u7684 ObservableList \u4f46\u662f\u756b\u9762\u6c92\u6709\u986f\u793a \u4e4b\u524d\u7684\u7248\u672c\u597d\u50cf\u8981\u7528 workaround \u4f86\u89e3\u6c7a\uff0c\u73fe\u5728\u7528 TableView \u7684 refresh() method \u5373\u53ef \u8b8a\u66f4\u8cc7\u6599\u5217\u7684\u984f\u8272 mytable.setRowFactory(myRowFactory()); private Callback myRowFactory() { return new Callback&lt;TableView&lt;MyModel&gt;,TableRow&lt;MyModel&gt;&gt;() { public TableRow&lt;MyModel&gt; call(TableView&lt;MyModel&gt; tv) { final TableRow&lt;MyModel&gt; row=new TableRow&lt;MyModel&gt;() { @Override protected void updateItem(MyModel model, boolean [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[142],"class_list":["post-1032","post","type-post","status-publish","format-standard","hentry","category-java","tag-javafx-java"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=\/wp\/v2\/posts\/1032","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1032"}],"version-history":[{"count":3,"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=\/wp\/v2\/posts\/1032\/revisions"}],"predecessor-version":[{"id":1036,"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=\/wp\/v2\/posts\/1032\/revisions\/1036"}],"wp:attachment":[{"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1032"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1032"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1032"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}