2017-03-03 4 views
0

내가 추종자 http://code.makery.ch/library/javafx-8-tutorial/part2/을 가지고 TableColumn의 사용 람다 값을 설정하는 코드가있다 :자바 FX : 하나 TableColumn의 두 값

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

는하지만 하나 개의 컬럼 fullName의를 가지고 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

그 컴파일합니까? 람다 식은'String'으로 평가됩니다 : ObservableValue 이 필요합니다. –

+0

네, 맞습니다. 나는 다른 접근법을 가진 다른 프로젝트를 가지고 있지만 다음과 같은 컴파일을한다. 그러나 이것은 다른 이야기이다 fullNameColumn.setCellValueFactory(cellData ->new SimpleStringProperty (cellData.getValue().firstName() + " " + cellData.getValue().lastName())); : – brack11