Yararlı bilgilerden kaçınmadan olabildiğince kısa olmak istiyorum. Aşağıdaki sınıfı vardır: başka bir sınıfı, istemci sahipJavaFX TableView için öğeler nasıl ayarlanır? Nesne başka bir nesne içeriyor mu?
public class Address{
StringProperty city = new SimpleStringProperty();
StringProperty street = new SimpleStringProperty();
//following the constructor, getters and setters
...
}
, bu bir 3 çıkışı gereken bir TableView nesnesi içeren bir adres elemanını
public class Client {
StringProperty name = new SimpleStringProperty();
StringProperty id = new SimpleStringProperty();
ObjectProperty<Address> address = new SimpleObjectProperty<>();
//following the constructor, getters and setters
...
}
ve bir kontrol ile JavaFX arayüze sahip İstemci sınıfının üyelerini ve belirtilen nesne için adres sınıfının şehir üyesini sütunlar. My TableView ve TableColumn tanımı
public class SettingsController {
TableColumn<Client, String> clientNameCol;
TableColumn<Client, String> clientEmailCol;
TableColumn<Client, String> clientCityCol;
private TableView<Client> clientSettingsTableView;
...
...
clientNameCol = new TableColumn<>("Name");
clientNameCol.setCellValueFactory(new PropertyValueFactory<Client, String>("name"));
clientEmailCol = new TableColumn<>("email");
clientEmailCol.setCellValueFactory(new PropertyValueFactory<Client, String>("email"));
clientCityCol = new TableColumn<>("City");
clientCityCol.setCellValueFactory(new PropertyValueFactory<Client, String>("city"));
clientSettingsTableView.setItems(clientData);
clientSettingsTableView.getColumns().clear();
clientSettingsTableView.getColumns().addAll(clientNameCol, clientEmailCol, clientCityCol);
ve tabii ki
Müşteri nesne bir dizi içeren bir ObservableList clientData olduğu aşağıdaki kod bulunmaktadır. Her şey, her istemci için şehri çıkarması gereken sütun dışında iyi çalışır. İstemci nesnesinin şehir için (bir Adres üyesi tarafından bulunan) sütununu nasıl tanımlamalıyım? (clientCityCol = new TableColumn<>("City");
clientCityCol.setCellValueFactory(new PropertyValueFactory<Client, Address>("address"));
// ======== setting the cell factory for the city column
clientCityCol.setCellFactory(new Callback<TableColumn<Client, Address>, TableCell<Client, Address>>(){
@Override
public TableCell<Client, Address> call(TableColumn<Client, Address> param) {
TableCell<Client, Address> cityCell = new TableCell<Client, Address>(){
@Override
protected void updateItem(Address item, boolean empty) {
if (item != null) {
Label cityLabel = new Label(item.getCity());
setGraphic(cityLabel);
}
}
};
return cityCell;
}
});
Adres sınıfı, bir alıcı getCity (vardır) bir Dize olarak şehir üyesini döndürür: Yardımlarınız için
http://fxapps.blogspot.com/2012/09/showing-object-properties-in-tableview.html yararlı olabilir – invariant