Goodevening everyone,JavaFX2.2并非所有的表列都显示了PropertyValueFactory的数据?
今天我偶然发现了一个相当奇怪的问题,我不知道我做错了什么。它关于使用PropertyValueFactory绑定表列。我在FXML中创建了表视图和表列,并使用Scene Builder设置了适当的fx:id。
现在的问题是,一些列显示预期的数据等栏目都只是空的。我想补充的内容与下面的代码表视图,当用户按下一个按钮:
ObservableList<User> olUsers = DA_User.getUsers();
tbl_MC_Manage_Users.getItems().addAll(olUsers);
我肯定知道,在olUsers用户对象包含所有需要的数据(以测试它的循环和系统。通过out.println)
我得到这样一个结果:(<文本>代表列标题)
<disabled> <username> <title> <lastname> <firstname> <address> <zip> <city>
false (empty) Mr. (empty) (empty) address1 (empty) city1
false (empty) Miss (empty) (empty) address2 (empty) city2
所以出于某种原因colums用户名,姓,名,拉链没有显示任何数据.. 。
控制器的某些部分:
//declaration (these are the fx:id's connected to my table colums)
@FXML private TableView<User> tbl_MC_Manage_Users;
@FXML private TableColumn<User,Boolean> tc_MC_Manage_Disabled;
@FXML private TableColumn<User,String> tc_MC_Manage_Username;
@FXML private TableColumn<User,String> tc_MC_Manage_Title;
@FXML private TableColumn<User,String> tc_MC_Manage_Lastname;
@FXML private TableColumn<User,String> tc_MC_Manage_Firstname;
@FXML private TableColumn<User,String> tc_MC_Manage_Address;
@FXML private TableColumn<User,String> tc_MC_Manage_ZipCode;
@FXML private TableColumn<User,String> tc_MC_Manage_City;
@Override
public void initialize(URL url, ResourceBundle rb) {
...
//setting the binding on the table columns at initialize();
tc_MC_Manage_Disabled.setCellValueFactory(new PropertyValueFactory<User, Boolean>("disabled"));
tc_MC_Manage_Username.setCellValueFactory(new PropertyValueFactory<User, String>("username"));
tc_MC_Manage_Title.setCellValueFactory(new PropertyValueFactory<User, String>("title"));
tc_MC_Manage_Firstname.setCellValueFactory(new PropertyValueFactory<User, String>("firstname"));
tc_MC_Manage_Lastname.setCellValueFactory(new PropertyValueFactory<User, String>("lastname"));
tc_MC_Manage_Address.setCellValueFactory(new PropertyValueFactory<User, String>("address"));
tc_MC_Manage_ZipCode.setCellValueFactory(new PropertyValueFactory<User, String>("zipcode"));
tc_MC_Manage_City.setCellValueFactory(new PropertyValueFactory<User, String>("city"));
...
}
以下是User类
private SimpleBooleanProperty disabled = new SimpleBooleanProperty();
private SimpleStringProperty username = new SimpleStringProperty("");
private SimpleStringProperty title = new SimpleStringProperty("");
private SimpleStringProperty lastname = new SimpleStringProperty("");
private SimpleStringProperty firstname = new SimpleStringProperty("");
//... (same for the others)
//getters
public boolean isDisabled() { return disabled.get(); }
public String getTitle() { return title.get(); }
public String getUsername() { return username.get(); }
public String getLastName() { return lastname.get(); }
public String getFirstName() { return firstname.get(); }
//... (same for the others)
//setters
public void setDisabled(boolean value) { disabled.set(value); }
public void setUsername(String value) { username.set(value); }
public void setTitle(String value) { title.set(value); }
public void setLastName(String value) { lastname.set(value); }
public void setFirstName(String value) { firstname.set(value); }
//... (same for the others)
对不起,我的代码加载的某些部分,但我真的不明白为什么只有几列得到他们的数据。我希望有人能指出我在正确的方向:)
提前感谢!
哈第二部分我怎么会错过了...感谢您的迅速和明确的答案谢尔盖! – Perneel 2012-08-16 17:33:02
我遇到了setCellValueFactory(新的PropertyValueFactory(“第一个”))问题,其中第一个属性。你的小费帮了我很多!我创建了公共SimpleBooleanProperty firstProperty()并且一切正常。谢谢谢尔盖! – HowYaDoing 2017-09-25 18:56:27