javafx -- TableView的使用

總覽

首先需要一個Model類來構建數據結構和方法,然後創建一個Observablelist來與TableView綁定,Observablelist中存儲Model類的對象。

下面是例子:

Model class

import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;

public Person {
    public Person(String id, String name){
        this.setId(id);
        this.setName(name);
    }

    private StringProperty id;  //也可以在這裏直接new
    public void setId(String value){ idProperty().set(value);}
    public String getId(){ return idProperty().get(); }
    public StringProperty idProperty(){
        if(id == null) id = new SimpleStringProperty(this, "id");
        return id;
    }

    private StringProperty name;
    public void setName(String value){ nameProperty().set(value);}
    public String getName(){ return idProperty().get(); }
    public StringProperty nameProperty(){
        if(name == null) name = new SimpleStringProperty(this, "name");
        return name;
    }
}

所有屬性使用對應的Property屬性,每個屬性對應三個函數:get(), set(), Property(),其中Property方法用於獲得變量。
除了上面的寫法,也可以聲明變量的時候直接new,這樣Property()方法只需要return。

Controller class

    @FXML
    private TableView<Person> personTable;
    @FXML
    private TableColumn<Person, String> idColumn;
    @FXML
    private TableColumn<Person, String> nameColumn;

    //用於保存數據,<>中爲上面Model類的類名
    private ObservableList<Person> personData = FXCollections.observableArrayList();

    /**
    * 在fxml文件完成載入時自動被調用
    */
    @FXML
    private void initialize(){
        idColumn.setCellValueFactory(cellData -> cellData.getValue().idProperty());
        nameColumn.setCellValueFactory(cellData -> cellData.getValue().nameProperty());

        //綁定數據到TableView
        personTable.setItems(personData);

        //添加數據到personData,TableView會自動更新
        personData.add(new Person("007", "愛誰誰"));
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章