2017-03-03 39 views
0

我跟隨http://code.makery.ch/library/javafx-8-tutorial/part2/,有一個代碼在TableColumn中使用Lambda表達式設定值:JavaFX的:在一個TableColumn的兩個值

firstNameColumn.setCellValueFactory(cellData -> cellData.getValue().firstNameProperty()); 
lastNameColumn.setCellValueFactory(cellData -> cellData.getValue().lastNameProperty()); 

但是,如果我有一列全名,並希望聯合firstNameColumn和lastNameColumn做什麼成一個fullName?

謝謝你的回答。

回答

4

這可以通過創建一個StringBinding取決於雙方的姓氏和名字來完成:

fullNameColumn.setCellValueFactory(cellData -> Bindings.createStringBinding(
    () -> cellData.getValue().getLastName() + ", " + cellData.getValue().getFirstName(), 
    cellData.getValue().firstNameProperty(), 
    cellData.getValue().lastNameProperty() 
)); 
+1

或'cellData - > cellData.getValue()。firstNameProperty()。concat(「,」 ).concat(cellData.getValue()。lastNameProperty())'(不太確定這是否是更清潔的...) –

0

的foolowing代碼工作:

fullNameColumn.setCellValueFactory(cellData -> cellData.getValue().firstNameProperty() + " " + cellData.getValue().lastNameProperty()); 
+0

對不起,這段代碼實際上是不正確的。 fabian的回答很好 – brack11

+1

這是否編譯? lambda表達式評估爲「String」:您需要一個'ObservableValue '。 –

+0

是的,你是對的。我有不同的方法與不同的方法,下面的編譯,但這是不同的故事fullNameColumn.setCellValueFactory(cellData ->new SimpleStringProperty (cellData.getValue().firstName() + " " + cellData.getValue().lastName()));: – brack11

相關問題