JavaFX의 TableView를 사용하여 하위 클래스의 getter 속성에 액세스하려고합니다.JavaFX TableView ObservableArrayList의 하위 클래스 속성 액세스
public class PersonType implements Serializable {
private static final long serialVersionUID = 1L;
Person person;
short count;
public PersonType() {
}
public PersonType(Person person, short count) {
super();
this.person = person;
this.count = count;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public short getCount() {
return count;
}
public void setCount(short count) {
this.count = count;
}
사람은 다음과 같이이다 : 나는 다음과 같은 클래스가 공용 클래스 사람이 좋아 직렬화 {
private static final long serialVersionUID = 1L;
String firstName;
String lastName;
public Person() {
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
구현을 - 마지막으로 우리는 다음과 같습니다
@FXML
private TableColumn tcFirstName;
@FXML
private TableColumn tcLastName;
@FXML
private TableView tblPersonTypes;
ArrayList<PersonType> pType = new ArrayList<PersonType>();
//Can assume that pType here has say 5 entries, the point of this
//is I'm trying to get to the firstName, lastName properties of the
//PersonType in the TableView below like the following:
tcFirstName.setCellValueFactory(new PropertyValueFactory<String,String>("firstName"));
tcLastName.setCellValueFactory(new PropertyValueFactory<String,String>("lastName"));
//Populate Table with Card Records
ObservableList<PersonType> data = FXCollections.observableArrayList(pType);
tblPersonTypes.setItems(data);
그리고 나 ' 필자는 PersonType의 목록을 어떻게 사용하는지 확신 할 수 없다. 테이블 열에 포함 된 Person 객체의 firstName 및 lastName 속성을 원한다고 말할 수있다. 나는 새로운 객체를 생성 할 수 있고, PersonTypes로부터 "count"를 얻었고 Person의 객체 속성을 갖지 않고 "firstName", "lastName"등의 다른 속성을 가질 수 있음을 안다. 어떤 도움이라도 대단히 감사하겠습니다.
- 편집 - 나는 CellFactories을 사용했다 이렇게 생각
또 다른 방법 - 나는 CellValueFactories에 Person 객체를 전달 할 곳은, 다음 첫 번째 대한 (firstName을을 문자열 값을 반환 할 CellFactory 설정 이름 열 등). 그리고 그 결과는 다음과 같습니다
tcFirstName.setCellValueFactory(new PropertyValueFactory<Person,String>("person"));
tcFirstName.setCellFactory(new Callback<TableColumn<Person,String>,TableCell<Person,String>>(){
@Override
public TableCell<Person,String> call(TableColumn<Person,String> param) {
TableCell<Person,String> cell = new TableCell<Person,String>(){
@Override
public void updateItem(String item, boolean empty) {
if(item!=null){
setGraphic(new Label(item.getFirstName()));
}
}
};
return cell;
}
});