PropertyValueFactory / setCellValueFactory JavaFX

时间:2014-07-08 13:49:00

标签: java javafx-8 scenebuilder

我在JavaFx中有以下基本代码。如果我想更改PropertyValueFactory的名称(" id")让我们说" rid"它不再填满我的桌子了。即使我也将SimpleLongProperty对象更改为rid。你知道" id"是引用/指向?

公共类Main_Controller实现Initializable {

    public class Item {
        public SimpleLongProperty id = new SimpleLongProperty();

        public Long getId() {
            return id.get();
        }
    }

    // The table and columns
    @FXML TableView<Item> itemTbl;
    @FXML TableColumn itemIdCol;
    @FXML Button add_Button;

    // The table's data
    ObservableList<Item> data;

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // Set up the table data
        itemIdCol.setCellValueFactory(
            new PropertyValueFactory<Item,Long>("id")
        );

        data = FXCollections.observableArrayList();
        itemTbl.setItems(data);
    }    

    static long nextId = 1;

    @FXML
    private void handleButtonAction(ActionEvent event) {
        Item item = new Item();
        item.id.setValue(nextId++);
        data.add(item);
    }
}

代码已更改PropertyValueFactory:

公共类Main_Controller实现Initializable {

    public class Item {
        public SimpleLongProperty rid = new SimpleLongProperty();

        public Long getId() {
            return rid.get();
        }
    }

    // The table and columns
    @FXML TableView<Item> itemTbl;
    @FXML TableColumn itemIdCol;
    @FXML Button add_Button;

    // The table's data
    ObservableList<Item> data;

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // Set up the table data
        itemIdCol.setCellValueFactory(
            new PropertyValueFactory<Item,Long>("rid")
        );

        data = FXCollections.observableArrayList();
        itemTbl.setItems(data);
    }    

    static long nextId = 1;

    @FXML
    private void handleButtonAction(ActionEvent event) {
        Item item = new Item();
        item.rid.setValue(nextId++);
        data.add(item);
    }
}

1 个答案:

答案 0 :(得分:0)

您的Item类中需要一个名为

的方法
public Long getRid(){return rid.get();}

public SimpleLongProperty ridProperty(){return rid;}

注意,它不是变量的名称,通常是私有的,但重要的是getter的名称。

Javadoc link