{"id":2335,"date":"2022-07-07T12:49:01","date_gmt":"2022-07-07T04:49:01","guid":{"rendered":"http:\/\/localhost\/bpoint\/?p=2335"},"modified":"2022-07-07T12:49:01","modified_gmt":"2022-07-07T04:49:01","slug":"javafx-tableview%e8%87%aa%e8%a8%82%e7%be%a9%e6%8e%92%e5%ba%8f-%e6%9c%80%e5%be%8c%e4%b8%80%e5%88%97%e8%b3%87%e6%96%99%e4%b8%8d%e7%b4%8d%e5%85%a5%e6%8e%92%e5%ba%8f%e5%88%a4%e6%96%b7","status":"publish","type":"post","link":"https:\/\/bpoint.space\/?p=2335","title":{"rendered":"JavaFX TableView\u81ea\u8a02\u7fa9\u6392\u5e8f-\u6700\u5f8c\u4e00\u5217\u8cc7\u6599\u4e0d\u7d0d\u5165\u6392\u5e8f\u5224\u65b7"},"content":{"rendered":"<p>package funcion;<\/p>\n<p>import java.util.Comparator;<\/p>\n<p>import javafx.application.Application;<br \/>\nimport javafx.beans.property.SimpleStringProperty;<br \/>\nimport javafx.collections.FXCollections;<br \/>\nimport javafx.collections.ObservableList;<br \/>\nimport javafx.geometry.Insets;<br \/>\nimport javafx.scene.Group;<br \/>\nimport javafx.scene.Scene;<br \/>\nimport javafx.scene.control.Label;<br \/>\nimport javafx.scene.control.TableColumn;<br \/>\nimport javafx.scene.control.TableView;<br \/>\nimport javafx.scene.control.cell.PropertyValueFactory;<br \/>\nimport javafx.scene.layout.VBox;<br \/>\nimport javafx.scene.text.Font;<br \/>\nimport javafx.stage.Stage;<br \/>\nimport javafx.util.Callback;<\/p>\n<p>\/**200921-GDK-tableview\u81ea\u8a02\u7fa9\u6392\u5e8f\u7bc4\u4f8b-\u6578\u5b57\u683c\u5f0f\u5316\u6392\u5e8f*\/<br \/>\npublic class TableViewLastColumNotSort extends Application {<\/p>\n<p>private TableView&lt;Person&gt; table = new TableView&lt;Person&gt;();<br \/>\nprivate ExtraPerson extraPerson = new ExtraPerson(&#8220;Ninja Village&#8221;);<\/p>\n<p>private final ObservableList&lt;Person&gt; data = FXCollections<br \/>\n.observableArrayList(<br \/>\nnew Person(&#8220;Jacob&#8221;, &#8220;1,111&#8221;, &#8220;jacob.smith@example.com&#8221;),<br \/>\nnew Person(&#8220;Isabella&#8221;, &#8220;1,123&#8221;,<br \/>\n&#8220;isabella.johnson@example.com&#8221;),<br \/>\nnew Person(&#8220;Ethan&#8221;, &#8220;111&#8221;,<br \/>\n&#8220;ethan.williams@example.com&#8221;),<br \/>\nnew Person(&#8220;Emma&#8221;, &#8220;222,222&#8221;, &#8220;emma.jones@example.com&#8221;),<br \/>\nnew Person(&#8220;Michael&#8221;, &#8220;312&#8221;, &#8220;michael.brown@example.com&#8221;),<br \/>\nextraPerson);<\/p>\n<p>public static void main(String[] args) {<br \/>\nlaunch(args);<br \/>\n}<\/p>\n<p>@Override<br \/>\npublic void start(Stage stage) {<br \/>\nScene scene = new Scene(new Group());<br \/>\nstage.setTitle(&#8220;Table View Sample&#8221;);<br \/>\nstage.setWidth(450);<br \/>\nstage.setHeight(500);<\/p>\n<p>final Label label = new Label(&#8220;Address Book&#8221;);<br \/>\nlabel.setFont(new Font(&#8220;Arial&#8221;, 20));<\/p>\n<p>table.setEditable(true);<\/p>\n<p>TableColumn firstNameCol = new TableColumn(&#8220;First Name&#8221;);<br \/>\nfirstNameCol.setMinWidth(100);<br \/>\nfirstNameCol<br \/>\n.setCellValueFactory(new PropertyValueFactory&lt;Person, String&gt;(<br \/>\n&#8220;firstName&#8221;));<\/p>\n<p>TableColumn moneyCol = new TableColumn(&#8220;Money&#8221;);<br \/>\nmoneyCol.setMinWidth(100);<br \/>\nmoneyCol<br \/>\n.setCellValueFactory(new PropertyValueFactory&lt;Person, String&gt;(<br \/>\n&#8220;Money&#8221;));<\/p>\n<p>TableColumn emailCol = new TableColumn(&#8220;Email&#8221;);<br \/>\nemailCol.setMinWidth(200);<br \/>\nemailCol.setCellValueFactory(new PropertyValueFactory&lt;Person, String&gt;(<br \/>\n&#8220;email&#8221;));<\/p>\n<p>\/**<br \/>\n* Adding comparator to extraPerson<br \/>\n* \u8986\u5bebsort\u5224\u65b7<br \/>\n*\/<\/p>\n<p>table.sortPolicyProperty().set(<br \/>\nnew Callback&lt;TableView&lt;Person&gt;, Boolean&gt;() {<\/p>\n<div class=\"article-inread-ad\"><\/div>\n<p>\/*\u81ea\u52d5\u751f\u6210*\/<br \/>\n@Override<br \/>\npublic Boolean call(TableView&lt;Person&gt; param) {<br \/>\nComparator&lt;Person&gt; comparator = new Comparator&lt;Person&gt;() {<br \/>\n@Override<br \/>\npublic int compare(Person r1, Person r2) {<\/p>\n<p>if (r1 == table.getItems().get(table.getItems().size()-1)) {<br \/>\n\/* r1\u662f\u6700\u5f8c\u4e00\u7b46\u6642\u6b63\u5e38\u6d3e\u6392\u5e8f *\/<br \/>\nreturn 1;<br \/>\n} else if (r2 == table.getItems().get(table.getItems().size()-1)) {<br \/>\n\/* r2\u662f\u6700\u5f8c\u4e00\u7b46\u6642\u4e0d\u6392\u5e8f *\/<br \/>\nreturn -1;<br \/>\n} else if (param.getComparator() == null) {<br \/>\nreturn 0;<br \/>\n} else {<br \/>\nreturn param.getComparator().compare(r1, r2);<br \/>\n}<\/p>\n<p>}<br \/>\n};<\/p>\n<p>\/*\u9810\u8a2d\u8907\u5beb\u72c0\u614b\u6210\u7acb*\/<br \/>\nFXCollections.sort(table.getItems(), comparator);<br \/>\nreturn true;<br \/>\n}<br \/>\n});<\/p>\n<p>table.setItems(data);<br \/>\ntable.getColumns().addAll(firstNameCol, moneyCol, emailCol);<br \/>\n\/\/ table.getColumns().hashCode();<br \/>\nfinal VBox vbox = new VBox();<br \/>\nvbox.setSpacing(5);<br \/>\nvbox.setPadding(new Insets(10, 0, 0, 10));<br \/>\nvbox.getChildren().addAll(label, table);<\/p>\n<p>((Group) scene.getRoot()).getChildren().addAll(vbox);<\/p>\n<p>stage.setScene(scene);<br \/>\nstage.show();<br \/>\n}<\/p>\n<p>public static class Person {<\/p>\n<p>private final SimpleStringProperty firstName;<br \/>\nprivate final SimpleStringProperty money;<br \/>\nprivate final SimpleStringProperty email;<\/p>\n<p>private Person(String fName, String money, String email) {<br \/>\nthis.firstName = new SimpleStringProperty(fName);<br \/>\nthis.money = new SimpleStringProperty(money);<br \/>\nthis.email = new SimpleStringProperty(email);<br \/>\n}<\/p>\n<p>public String getFirstName() {<br \/>\nreturn firstName.get();<br \/>\n}<\/p>\n<p>public void setFirstName(String fName) {<br \/>\nfirstName.set(fName);<br \/>\n}<\/p>\n<p>public String getMoney() {<br \/>\nreturn money.get();<br \/>\n}<\/p>\n<p>public void setMoney(String Money) {<br \/>\nmoney.set(Money);<br \/>\n}<\/p>\n<p>public String getEmail() {<br \/>\nreturn email.get();<br \/>\n}<\/p>\n<p>public void setEmail(String Email) {<br \/>\nemail.set(Email);<br \/>\n}<br \/>\n}<\/p>\n<p>public static class ExtraPerson extends Person {<\/p>\n<p>private final SimpleStringProperty address;<\/p>\n<p>private ExtraPerson(String address) {<br \/>\nsuper(&#8220;Itachi&#8221;, &#8220;333&#8221;, &#8220;leaf@village.ninja&#8221;);<br \/>\nthis.address = new SimpleStringProperty(address);<br \/>\n}<\/p>\n<p>public String getAddress() {<br \/>\nreturn address.get();<br \/>\n}<\/p>\n<p>public void setAddress(String address) {<br \/>\nthis.address.set(address);<br \/>\n}<\/p>\n<p>}<br \/>\n}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>package funcion; import java.util.Comparator; import ja [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":2008,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[37],"tags":[46,44,45],"class_list":["post-2335","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-support","tag-java","tag-javajavafx","tag-45"],"_links":{"self":[{"href":"https:\/\/bpoint.space\/index.php?rest_route=\/wp\/v2\/posts\/2335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bpoint.space\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bpoint.space\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bpoint.space\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/bpoint.space\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2335"}],"version-history":[{"count":0,"href":"https:\/\/bpoint.space\/index.php?rest_route=\/wp\/v2\/posts\/2335\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bpoint.space\/index.php?rest_route=\/wp\/v2\/media\/2008"}],"wp:attachment":[{"href":"https:\/\/bpoint.space\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2335"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bpoint.space\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2335"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bpoint.space\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}