2014-06-10 1 views
0

현재 TableView를 다루는 좋은 방법을 찾기 위해 TableView를 사용하고 있습니다. 지금은 PropertyValueFactory를 사용하여 테이블을 채우고 TextFieldTableCell.forTableColumn()을 CellFactory로 채 웁니다.셀에 값을 소스 객체에 다시 저장하려면 어떻게합니까?

내 문제 : 셀을 편집 할 수 있지만 변경 내용이 저장되지 않습니다. 테이블을 정렬하는 것만으로도 값을 되돌릴 수 있습니다. 가치를 다시 예를 들어에 넣으려면 어떻게해야합니까? 모델 클래스의 SimpleStringProperty? 어리숙한 양의 상용구 코드를 피한다면 보너스 포인트.

답변

0

모델 개체가 속성을 제대로 표시하는 한 제대로 작동합니다. 나는. 당신은 모델 클래스가

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

public class Person { 
    private final StringProperty firstName = new SimpleStringProperty(this, "firstName"); 
    public final String getFirstName() { 
     return firstName.get(); 
    } 
    public final void setFirstName(String firstName) { 
     this.firstName.set(firstName); 
    } 
    public StringProperty firstNameProperty() { 
     return firstName ; 
    } 

    private final StringProperty lastName = new SimpleStringProperty(this, "lastName"); 
    public final String getLastName() { 
     return lastName.get(); 
    } 
    public final void setLastName(String lastName) { 
     this.lastName.set(lastName); 
    } 
    public StringProperty lastNameProperty() { 
     return lastName ; 
    } 

    public Person(String firstName, String lastName) { 
     this.setFirstName(firstName); 
     this.setLastName(lastName); 
    } 
} 

로 구성해야하고 당신은 할 수

TableColumn<Person, String> firstNameCol = new TableColumn<>("First Name"); 
firstNameCol.setCellValueFactory(new PropertyValueFactory<>("firstName")); 
// In Java 8, I prefer: 
// firstNameCol.setCellValueFactory(data -> data.getValue().firstNameProperty()); 
firstNameCol.setCellFactory(TextFieldTableCell.forTableColumn()); 
관련 문제